安洵杯 2019

  • 0x01 easy_web

    关键词:文件读取,源码泄露,md5强碰撞,反斜杠绕过

打开网页发现增加了两个get类型的变量,其中image变量名称怀疑为base64加密后的数据

cmd变量为空,初步猜测为输入点经过两次base64解码后发现为十六进制字符串,翻译后得

更改img变量内容发现左上角图片消失,判断可以采用此方法泄露源代码,此时将index.php按顺序加密后作为image变量输入得到base64加密后的源代码,解密后获得源代码如下

由源代码可知img变量过滤flag,即不能通过img变量获取flag,并且可以通过利用cmd字符串的代码执行漏洞获取flag。

由代码审计可知需要以post方式传入两个变量a和b并且使a与b的md5值相等同时a与b的字符串值不等,这与之前做过的用数组绕过md5的题不同,该题中采用数组绕过md5的过程中会使第一个条件即强行转化字符串后得到的结果也相等,则直接跳转到下一个条件处。因而只能采用md5强碰撞完成,下面给出解该题所用的md5碰撞字符串对:

a与b在url解码后进行md5加密得到相同的结果,如下图所示:而后通过反斜杠\规避正则表达式过滤,最终获取根目录下的flag

Payload:

Last updated