[GXYCTF2019]BabySQli
题目链接:[GXYCTF2019]BabySQli。
个人认为这道题是脑洞题(当然也跟基础业务知识不够有关)。
打开题目后环境如下。
只有一个登录框,因此常规操作,先测试一下看看。
通过多次输入不同的 UserName、password 发现,存在 admin 用户,并且可以遍历 UserName。
接下来尝试注入,发现似乎只有 Username 处可注入,而 password 处不可注入。
Payload:name=admin'&pw=admin
。
这时,留意到响应包中存在一些注释。
<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->
。
将其 Base32 解码,随后再 Base64 解码,得到:select * from user where username = '$name'
。
在此处,可以猜测 username 与 password 是分开验证,且一般来说,password 不会是明文比对,一般是摘要算法处理后进行比对。
继续在 username 处进行注入。
通过使用 Payload:name=admin' union select 1,2 ;#&pw=admin
,name=admin' union select 1,2,3 ;#&pw=admin
,观察响应包内容,可以发现后端查询后是返回了 3 列数据。
猜测后端是通过 md5 函数计算了前端用户提交的 password,再跟后端查询到的 SQL 结果集中的(摘要)密码进行比对,若一致,则成功登陆。因此,可以先构造一个 username 为 1(真实后端中不存在 username 为 1 的用户),从而使得 SQL 结果集为空,再通过 SQL 注入,union 拼接了其他的数据,最终实现成功登陆 admin 账户。
Payload:1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e';#&pw=123456
(e10adc3949ba59abbe56e057f20f883e
即 "123456" 的 md5 摘要)。
获得 flag。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具