首页 > 技术文章 > bugku web 备份是个好习惯

r1kka 2021-09-12 14:39 原文

 

打开靶场后发现是一段意义不明的字符,根据题目的提示,首先先测试几个常用的备份文件后缀,经验证为index.php.bak(当然,可以用御剑进行扫描),将文件down到本地后进行查看

接下来来逐行分析php代码

 

 

⑤这是至关重要的一步,我最开始没有解出这道题就是卡在这一步上,首先我不是太理解将URI中的字符串解析成变量的含义,在网上查询了资料之后,我个人认为可以这样理解:

可以将自己在URL中输入的字符串当做变量去执行,比如说下文中的$key1和$key2,如果我们在URL中输入了key1或者key2这样的字符,parse_str()就会将其解析成$key1和$key2放入php代码中去执行

 

⑦如果key1和key2的md5值相等且key1和key2本身不相等,就能输出flag

因为在对key1和key2的md5值进行对比时,如果md5值是以0e开头,根据php的特性,php将其认作为0,因此只要key1和key2的md5值都是以0e开头,则条件成立

常见的md5值以0e开头:https://www.cnblogs.com/apolloren/p/14139516.html

 

 

在分析完代码后,接下来进行构造payload

初步构造:?key1=QNKCDZO&key2=240610708,发现flag还是没有输出,这时我们要注意到key会被转换为空字符串,需要进行绕过

双写绕过:?kkeyey1=QNKCDZO&kkeyey2=240610708,即可得到flag

 

推荐阅读