BugKu之备份是个好习惯
题目:备份是个好习惯
思路分析
打开题目,看到一个字符串。
文章图片
联系到题目,就猜到肯定是源代码泄露,用工具扫一下,发现了index.php.bak
,验证了我的猜想,下载下来看看。
源码审计
关注到
parse_str
函数。parse_str — 将字符串解析成多个变量代码逻辑分析
如果string
是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域(如果提供了result
则会设置到该数组里 )。
【BugKu之备份是个好习惯】str_replace — 子字符串替换
str_replace(
mixed$search
,
mixed$replace
,
mixed$subject
,
int&$count
= ?
): [mixed]
该函数返回一个字符串或者数组。该字符串或数组是将subject
中全部的search
都被replace
替换之后的结果。
程序逻辑比较简单:
- 提取query string,并去掉
?
,保存为$str
- 使用
str_replace
将$str
中的key
字符串替换成空格
- 使用
parse_str
将$str
中的变量解析出来
- 判断变量
$key1
和$key2
的md5,需要同时满足:
-
md5($key1) == md5($key2)
-
$key1 !== $key2
str_replace
。第二步,构造字符串绕过md5值比较。payload构造 第一步payload:
?kekeyy1=a&kekeyy2=a
第二步payload:
?kkeyey1=QNKCDZO&kkeyey2=240610708
字符串不相等时如何构造md5相等?获取flag
PHP中==是判断值是否相等,若两个变量的类型不相等,则会转化为相同类型后再进行比较。PHP在处理哈希字符串的时候,它把每一个以0e开头的哈希值都解析为0。
在md5加密后以0E开头
在sha1加密后以0E开头
- QNKCDZO
- 240610708
- s878926199a
- s155964671a
- aaroZmOk
- aaK1STfY
文章图片
文章图片
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息