mysql怎么注入布尔 mysql手工注入( 三 )


这里的表名要加上反单引号,是数据库的引用符 。
发现flag,但是没办法直接读取 。再读取words,发现里面有个id字段,猜测数据库语句为
结合1'or 1=1#可以读取全部数据可以利用改名的方法把修改1919810931114514为words,flag修改为id,就可以把flag读取了 。
最终payload:
盲注需要掌握的几个函数
在网页屏蔽了错误信息时就只能通过网页返回True或者False判断,本质上是一种暴力破解 , 这就是布尔盲注的利用点 。
首先,判断注入点和注入类型是一样的 。
但是盲注没有判断列数这一步和判断显示位这两步,这是和可回显注入的不同 。
判断完注入类型后就要判断数据库的长度,这里就用到了length函数 。
以[WUSTCTF2020]颜值成绩查询为例
输入参数后,发现url处有个get传入的stunum
然后用到length函数测试是否有注入点 。
发现页面有明显变化
将传入变为
页面回显此学生不存在
那么就可以得出数据库名长度为3
测试发现过滤了空格
然后就是要查数据库名了 , 这里有两种方法
一、只用substr函数,直接对比
这种方法在写脚本时可以用于直接遍历 。
二、加上ascii函数
这个payload在写脚本时直接遍历同样可以,也可用于二分法查找 , 二分法速度更快 。
接下来的步骤就和联合注入一样,只不过使用substr函数一个一个截取字符逐个判断 。但是这种盲注手工一个一个注十分麻烦所以要用到脚本 。
直接遍历脚本
二分法脚本
时间盲注用于代码存在sql注入漏洞,然而页面既不会回显数据 , 也不会回显错误信息
语句执行后也不提示真假,我们不能通过页面的内容来判断
所以有布尔盲注就必有时间盲注,但有时间盲注不一定有布尔盲注
时间盲注主要是利用sleep函数让网页的响应时间不同从而实现注入 。
sql-lab-less8:
无论输入什么都只会回显一个you are in...,这就是时间盲注的特点 。
当正常输入?id=1时时间为11毫秒
判断为单引号字符型注入后,插入sleep语句
明显发现响应时间为3053毫秒 。
利用时间的不同就可以利用脚本跑出数据库,后续步骤和布尔盲注一致 。
爆库
爆表
爆字段
脚本
在进行SQL注入时,发现union,and,or被完全过滤掉了,就可以考虑使用异或注入
什么是异或呢
异或是一种逻辑运算,运算法则简言之就是:两个条件相同(同真或同假)即为假(0),两个条件不同即为真(1),null与任何条件做异或运算都为null,如果从数学的角度理解就是,空集与任何集合的交集都为空
即1^1=0,0^0=0,1^0=1
利用这个原理可以在union,and,or都被过滤的情况下实现注入
[极客大挑战 2019]FinalSQL
给了五个选项但是都没什么用,在点击后都会在url处出现?id 。
而且union,and,or都被过滤
测试发现?id=1^1会报错
但是?id=1^0会返回?id=1的页面,这就是前面说的原理,当1^0时是等于1的所以返回?id=1的页面 。
根据原理写出payload , 进而写出脚本 。
爆库
爆表
爆字段
据此可以写出基于异或的布尔盲注脚本
实验推荐:课程:SQL注入初级(合天网安实验室)
如何在mysql中用navicat定义布尔类型表打开之后看到的是数据列表,没法看字段的类型 。要查看表中每个字段的类型,选择表之后,上面有个“设计表” , 点击之后就看到所有字段的类型了 。
mysql怎么注入布尔的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql手工注入、mysql怎么注入布尔的信息别忘了在本站进行查找喔 。

推荐阅读