十、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,从而去欺骗后台执行!




