wp-buuctf-babysql
2021/9/28 2:10:53
本文主要是介绍wp-buuctf-babysql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
wp
这个题和以前的一个题很像,很有意思,记录一下。
题目中有提示信息(与答案非常接近),主要是理解,这里会尽量不使用提示。
随意输入进行探测,提示信息页面中查看源代码。
注释中是大写字母和数字的混合,这是base32的特点,base32解密一下
有两个等号,这是base64的特征,解密一下:
这里可以看出这是账号密码不同步sql语句筛选,也就是会先选username,再在结果中比对password
关键就在这里,不同步筛选会产生哪些问题呢?
首先可以考虑group by注入,但是在这里密码不允许为空:
但是,这里只是前端限制
把这里的required删了就行,但是,还屏蔽了关键字password,那看来没办法了。
这里用到的就是虚拟数据,在之前的探测中,我们经常用到select 1,2,3
等来查看回显位置,在数据库中的产生就是这样的
这也是回显产生的原因,但是这个操作并没有创建1,2这个数据,而是强制筛选出一组临时数据。
如果在普通的username和password双验证的情况下,是无法完成这个操作的
但是这里就是先验证username再验证password,也就说我们可以先进行强制筛选,在输入密码与我设置的临时数据相同就可以了。
以下为提示(也可能为答案)
相信你已经能够看到这个提示了,最后多了一次hash。
也就是先强制进行筛选,最后填入设定好的临时数据,password验证正确就登陆成功了。数据库中演示如下(省略了id字段)
在username输入后,筛选出这样一条临时数据。
然后在密码栏输入123
md5($password)=password
验证成功
(提示需要删除md5两边的空格就是答案,当然你也可以换你喜欢的md5值和密码)
临时数据设置时,仅能使用admin,可以在探测中测试出来,所以猜想后台代码如下:
$data = select * from users where username=$name. if ($data['username'] === 'admin') { if ($data['password'] === md5($pw)) { return true; } }
这篇关于wp-buuctf-babysql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势