Bugku-web16-备份是个好习惯
2021-04-12 15:51
106 查看
启动环境如下:
看见页面有东西,数了数有64位,不是哈希就是md5,32位截断,在看看两个竟然一样,应该是两个md5
解密试试,提示[空密码]/[Empty String],额,有啥用么?
根据页面提示,备份是个好习惯,不管了,先找到备份在说,备份一般都是.bak文件,整个扫描器扫一波在说,过程省略。。。,结果发现确实有这个文件,ctf做多了,不管啥文件顺手就是扔hex工具里面。
可以明显看到有代码,复制出来看看
include_once "flag.php"; # 包含一次 ini_set("display_errors", 0); $str = strstr($_SERVER['REQUEST_URI'], '?'); # 判断?是否是当前URI中的子字符,是则返回?一直到结尾的内容 $str = substr($str,1); $str = str_replace('key','',$str); # 把str中的key替换为空 parse_str($str); # 把查询字符串解析到变量中 echo md5($key1); echo md5($key2); if(md5($key1) == md5($key2) && $key1 !== $key2){ echo $flag."鍙栧緱flag"; } ?>
PHP接触的比较少,就挨个查了一下什么意思,可以理解为第1行包含一次flag.php文件,第2行设置告警格式,第3行REQUEST_URI是获取当前的URL,用strstr函数截断,并将?后面的内容赋给参数$str,第4行在截断$str的1后面的内容赋给$str,第5行将str中的key替换为空,6行将str的值解析到变量中,78行输出了key1和key2的md5值,if判断key1和key2的md5相等,并且key1不等于key2的时候才会输出flag。
可以先构造参数试试http://114.67.246.176:14387/?key1=1&key2=2,页面没啥反应,其实也可以理解,代码第5行key被过滤,相当于没有输入参数,我们可以试试http://114.67.246.176:14387/?kkeyey1=1&kkeyey2=2,页面有变化了,解密发现是1,也没啥用啊,不禁一阵头大。
肯定是参数哪里有问题,这块有点蒙蔽,为啥两个参数一样但是md5不一样,不科学啊!只知道md5碰撞,但是我不可能在这提交两文件吧,后来查资料才发现md5不能获取数组的值,数组,难道构造一个数组的参数?http://114.67.246.176:14387/?kkeyey1[]=1&kkeyey2[]=2,提交了果然可以!!!
扩展:
题做完在看了看评论区,发现了新大陆!!!
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0e”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
什么玩意,开头两位是0e的都解释为0,这么草率的么,不禁感叹PHP真是世界上最好的语言!
相关文章推荐
- bugku的备份是个好习惯
- Bugku web:听说备份是个好习惯
- bugku-wp-听说备份是个好习惯
- 寒假bugku-web习题心得(前16题)
- BugkuCTF-web-备份是个好习惯 writeup
- BUGKU 备份是个好习惯
- BUGKU-备份是个好习惯
- 《MySQL入门很简单》学习笔记(16)之第16章数据备份与还原(关键词:MySQL/数据备份/数据还原)
- 16.JavaWeb基础 JSTL(JSP标准标签库)
- PHP学习(16) WEB技术
- linux系统,备份web系统常用的的命令
- Spring boot(16) spring boot 线上故障 上传文件出错:org.springframework.web.multipart.MultipartException: Could
- 为 Web 开发者提供的 16 本优秀的 E-BOOK
- 16 款优秀的Web开发辅助工具推荐
- Web 2.0 编程思想:16 条法则
- 【BUGKU】web部分wp(更新中)
- Bugku-web-域名解析题解
- 16 款优秀的Web开发辅助工具推荐
- phpweb如何备份数据库
- 这是一个神奇的登录框(Bugku-web题 使用sqlmap注入实例)