文章总结: 本文揭示了mysqljs包中的一个SQL注入技巧,源于其对参数化查询中对象类型的特殊处理。攻击者通过在JSON请求体中传递特定对象(如将password设为对象),可利用escape函数将对象转换为键值对(如password=password),从而构造出万能密码绕过认证。文章通过CTF案例与复现代码详细分析了漏洞原理,并提供了启用stringifyObjects或严格检查输入类型的修复方案。 综合评分: 85 文章分类: 漏洞分析,WEB安全,安全工具,实战经验
我们这里可以看到这里有三个路由
- /
- auth
- home 并且在auth处是做了鉴权操作的,然后在home的地方就可以返回当前用户的用户名
修复建议
第一种stringifyObjects
第一种也是前面所提到的加一个stringifyObjects当你使用createConnection的时候
var connection = mysql.createConnection({
host: "db",
user: "login",
password: "login",
database: "login",
stringifyObjects: true,
});
第二种check
也就是对输入进入的数据进行check
app.post("/auth", function (request, response) {
var username = request.body.username;
var password = request.body.password;
// Reject different value types
if (typeof username != "string" || typeof password != "string"){
response.send("Invalid parameters!");
response.end();
return;
}
if (username && password) {
connection.query(
"SELECT * FROM accounts WHERE username = ? AND password = ?",
[username, password],
function (error, results, fields) {
...
}
);
}
});
总结
感觉这种东西还是有好玩的地方的,所以我们在进行出题或者解题过程中如果没有思路不妨审计一下一些package
广告时间
感兴趣的师傅可以看看我们的内部知识星球,包含各种福利
- 1000+份SRC报告(覆盖各主流SRC平台、通用格式、复现技巧)
- 常用漏洞脚本 / 渗透工具合集
- 网络安全电子书资料包
- SRC报告 / 测试报告模板
- 常见渗透面试题+思路答法
- 若干方向的学习资料合集(CTF、免杀、AI安全、应急响应、渗透、内网、安卓逆向、开发语言、面试题等)
- 社群问答 / 项目机会 / 职业建议
部分资源展示
9084ce2aaa2473e734e083b054dd91c9
e8a94d452242c4bb72618077b320bb60
84f58b438ec04c44da38901f08c96ab0
25b07856ed6e77f7e9f314542a8cb22f
帮会专注于分享网络安全领域的资料收集分享,包括且不限于:渗透测试报告、渗透工具、学习资料、漏洞挖掘、各种源码系统、破解工具、安全运维、代码审计、安卓逆向、CTF比赛技巧、红队攻防等等。
目前帮会已有1400+资源,已有680+会员,期待你加入我们~
6a3307cf0e4af074dd3374fb50b86a78
知识大陆扫描二维码即可
微信图片_20260214084541_41_38
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:泷羽Sec-track 梦洛 梦洛《Mysqljs的一个小trick》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论