渗透测试之SQL注入(三) – 作者:随风kali

前文写了一些常规的SQL注入的手段和SQL注入产生的原因,之后的SQL注入文章会介绍一些高级注入方法。

Boolean注入

一、什么是Boolean注入

Boolean型的注入意思就是页面返回的结果是Boolean型的,通过构造SQL判断语句,查看页面的返回结果是否报错,页面返回是否正常等来判断哪些SQL判断条件时成立的,通过此来获取数据库中的数据。

二、Boolean注入实战

这里我们可以打开我们sqli-labs的第八关,这个靶场的源代码在之前的渗透测试之外网准备一文中发过了,不知道的可以再去看一下。

1601779252_5f7936342c84d44b228fd.png!small

第八关是一个Boolean注入的环境,首先我么先输入一个?id=1看一看会有什么情况

1601779321_5f793679812a2ff8fa6d1.png!small

这里出现了一个You are in……的字段

那么我们在输入一个?id=1’看看会出现什么

1601779401_5f7936c96de8e392f25a0.png!small

很显然,这里我们输入?id=1’ 查询语句是无法正常执行的,按照以往我们经验这里是会报错的,爆出一个语句查询错误的英文句子,但是这里没有。可是仔细观察,我们就会发现区别。错误的语句中是没有You are in…..这个字段的,那么我们就可以通过这个特性来进行我们的注入了。

三、boolean注入思想

在进行boolean我们是这样思考的。这里打个比方,站在你面前一个人,你问他叫什么名字,但是他是个哑巴不能说话,只会点头和摇头,这个时候你该怎么去得到他的名字呢。对,当然是我们去问他,然后他通过点头或摇头来告诉我们的正确与否。假设这个人名字叫张三,我问他,你姓李吗。他给我摇了个头,这个时候我知道了他不姓李,我继续问,直到我们他你姓张吗,他给我点了个头,这个时候我知道了。哦!原来他姓张,后面才字也是一样的手段。当然这样询问是工作量非常大的,在我们的boolean注入里面也是一样,所以我们在进行boolean注入的时候都会写一些自动化的注入工具来帮助我们完成注入。

四、开始boolean注入

再进行boolean注入之前我们还需要知道一些MySQL的一些内置函数

length(str):返回str字符串的长度。

substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回。注意这里的pos位置是从1开始的,不是数组的0开始
mid(str,pos,len):跟上面的一样,截取字符串
ascii(str):返回字符串str的最左面字符的ASCII代码值。
ord(str):同上,返回ascii码
if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0
知道了这些我们就可以开始我么的注入了
我们输入?id=1′ and ascii(substr((select database()),1,1))>104 %23
这句话的意思是判断数据库的第一个字符是否是我们所给出的字符
发现给我们返回的是You are in…..字段
那就相当于给我们点了个头
1601780307_5f793a53cff95efac6f38.png!small
那这样我们就知道了数据库的第一个字符,接下来就是写自动化脚本慢慢拆解了。当然一些代码功底薄弱的师傅还可以借助sqlmap帮助进行注入工作。

来源:freebuf.com 2020-10-20 13:32:11 by: 随风kali

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论