WEB攻击与防御技术 pikachu——sql注入

如图所示,sql注入
一、数字型注入

既然是post那我们拿burp抓一下包

id=2,我们改一下sql最常用的语句2 or 1=1发现注入成功

二、字符型注入

直接上语句1‘ or 1=1 #

出来了,下一个受害者
三、搜索型注入

发现他会匹配出现的所有username

又是正常的注入语句,并没有waf,依旧可以注入出来
四、xx型注入

这次直接上发现错误,说明这次有了一定的防御

结果发现他只是换了一种闭合方式,还是没有waf进行防御
五、insert/update注入

注册了用户名为zerben密码为123的账号
进入后发现

发现不是很行,insert注入肯定是在注册时候进行的,再次尝试,发现其注册并无过滤,直接奥里给,z' or updatexml(1,concat(0x7e,database()),0) or'

注出其数据库为pikachu
update注入在登陆后点击修改个人信息,无论修改哪个都一样,均无过滤
payload相同,也是直接注出其数据库

六、delete注入
既然是delete注入那就肯定在删除那里。先随便留言一下

删除后发现无提示直接删除,开启burp抓包

在url上改GET /pikachu/vul/sqli/sqli_del.php?id=57+or+updatexml(1,concat(0x7e,dabase()),0)

的确找到了pikachu的数据库但有些小问题,但语句是正确的。
六、http header 注入
根据提示进入后台

用burp抓包,根据名字测试http头注入,发现有注入点

用之前的爆数据库的payload,发现

发现爆出成功
八、盲注boolian
发现只能存在kobe' and 1=1 #连or 都会报错

于是利用and来构造payload
kobe' and ascii(substr(database(),1,1))=112 #
来一个个进行测试,爆出database
不对的话就会出现用户名不存在,正确的话就会出现用户正确信息,可采用二分法来减少盲注次数
九、盲注time
根据上题经验

发现其存在时间盲注,只要kobe存在就会执行后面的响应五秒延迟
根据这个在加上测试

payload: kobe' and if((substr(database(),1,1))='p',sleep(4),null) #
此时412ms就返回结果,说明数据库名第一位是p
将p改为a,则1ms返回结果
说明数据库名第一位是p

浙公网安备 33010602011771号