pikachu漏洞练习第四章节SQL注入-基于boolian的盲注,原理练习收获

什么是盲注

在有些情况下,后台使用了错误消息屏蔽方法(比如@)屏蔽了报错,此时无法在根据报错信息来进行注入的判断。
这种情况下的注入,称为“盲注”。
根据表现形式的不同,盲注又分为based boolean和based time两种类型。

基于boolian的盲注主要表现症状

没有报错信息
不管是正确的输入,还是错误的输入,都只显示两种情况(我们可以认为是0或者1)
在正确的输入下,编入and 1=1/and 1=2发现可以判断

练习部分

打开pikachu靶场的基于boolian的盲注部分。输入人员名字allen查询。

看起来和之前的字符型注入有些类似。

试试之前在字符型注入使用过的攻击代码

name' or 1=1#

显示输入的username不存在,攻击代码失效了。

猜想是不是网页利用算法,检测到后面的or等关键字符时就显示失败。

输入

allen' and 1=1#

尝试一下

成功输出了结果,说明网页并没有屏蔽掉and 1=1#的代码,这段代码进入了sql数据库进行了运算菜能输出的allen结果。

可是这个网页不像之前的题目一样会输出别的信息,或者有别的按钮和接口给我们植入sql语句代码,遇到这种情况就要使用到盲注。

举例

allen' and ascii(substr(database(),1,1))<113#

这段sql语句的意思是有两个条件,一个是allen字符条件,一个在数据库名称中提取第2个字符,长度为1,如果这个字符的ascii码值低于113就满足此条件,两个条件都满足时,输出allen值。最后的#号消掉后面的单引号。我们输入到网页测试一下。

成功输出结果,说明第一个字符的ascii码值是小于113的。

根据此我们可以构建代码

allen' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))<113#

在表中提取选项的第一个字符。看他的ascii值是不是小于113。

成功。依据此我们多次构建sql代码就可以确定每一个字符的ascii码值。这里只做原理的示意不做完整作答了太繁琐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值