SQL-Inject篇
1.数字型注入(POST)
根据下拉框先去尝试任意一个数字点击查询,发现url中并没有传参,提交方式为POST。然后我们点击数字1进行抓包测试
发送到Repeater,进行payload
1 | id=1 or 1=1 &submit= E69F A5 E8 AF A2 |
构造完成之后进行发包就可以看到页面将所有的用户和邮箱全部返回到页面上。
2.字符型注入(GET)
先随便尝试输入点击提交,页面返回用户名不存在,这时候发现请求在url内
正常返回的话是用户名和邮箱,然后我们就要进行构造payload。字符串需要添加单引号闭合才可以,我们需要把前后两个单引号注释掉。构造payload
1 | aaa' or 1=1--+ |
第一个单引号会将前面的单引号闭合,后面的–+号会注释掉后面的单引号。我们尝试提交。
结果就会全部显示在页面上
3.搜索型注入
我们输入k,然后点击搜索发现包含k字符的用户名输出了
发现和请求在url中然后根据上一题,直接构造payload
1 | aaa' or 1=1--+ |
只要理解了,然后猜测后台如何拼接,设置合法的payload,构造闭合。
4.xx型注入
进行尝试输入查询发现一直报错,然后构造payload发现是单引号+括号闭合方式
1 | aaa') or 1=1--+ |
5.”Insert/Update”注入
点击注册,进行注册在提交的时候进行抓包
发现可以进行报错注入,构造payload可以进行爆库、爆表、爆字段、爆内容
1 | updatexml(1,concat(0x7e,database(),0x7e),1)and'&password=aaa&sex=aaa&phonenum=aaa&email=aaa&add=aaa&submit=submit |
Update和Insert注入是一样的。
6.”Delete”注入
提交一个留言然后点击删除进行抓包
我们可以把id构造闭合
1 | 1 or updatexml(1,concat(0x7e,database()),0) |
选中右键,convert selection,对其进行url编码。
就可以进行爆库、爆表、爆字段、爆内容等流程了。
7.”http header”注入
点击提示获取账号密码然后点击登录进入页面
点击退出进行抓包
修改User-Agent,后面添加单引号’ 查看结果
发现有注入点,然后我们构造payload
1 | ' or updatexml(1,concat(0x7e,database()),0) or ' |
得到数据库名。
8.盲注(base on boolian)
输入111查找不到,输入kebo是可以的然后构造payload
1 | kobe' and 1=1# (返回正确) |
由此判断这里存在布尔盲注
9.盲注(base on time)
构造payload 查看两条语句的区别(sleep里面的参数是睡眠的时间为几秒)
1 | kobe |
发现第二条语句会多加载5秒由此判断这里还有时间盲注。
10.宽字节注入
在BIG5和GBK编码中,两个字节代表一个汉字,因此我们可以在%5c也就是/前面加上一个额外的编码如%df,来使mysql认为我们输入了%df%5c,从而把%5c吃掉,构造成了一个汉字。
所以我们进行抓包
构造payload
1 | %df'or 1=1# |