一些题解

admin 2022年3月25日23:59:56评论64 views字数 875阅读2分55秒阅读模式

一些题解

一些题解

原创声明!该文章著作权所有归 宁夏骐跃信息科技有限公司 F1A4安全团队~转载请注明!



题目-没错-就是这个"滑稽”图片

一些题解

一些题解

陌安

宁夏骐跃信息科技有限公司 


打开题目,一个滑稽。F12看下源代码,发现source.php文件


一些题解


访问发现是代码审计!!!!


一些题解



source.php

代码过长,我们分段开始审计。

首先来分析这段代码的逻辑流程。


一些题解

第一段

我们可以看到在这里定义了一个名为emm的类,行,先放着不管,我们继续看后面的



一些题解

第二段

这边是一个if逻辑判断,我们可以总结出需要的条件:

1.参数file需要传入一个值,这里需要通过GET方式传参//! empty($_REQUESTS['file'])

2.参数file传入的值必须是字符串

3.将file参数带入最开始定义的那个emm类里面进行判断

现在我们再回到刚才最开始的那个emm类中去分析


一些题解



第三段

我们看到将值带入了变量page中,然后定义了一个白名单($whitelist),并且进行了一个if判断,我们需要同时满足page的值不为空,且page的值必须是字符串才可以返回ture。



一些题解


第四段

这边进行了两个操作,第一个是一个if判断,判断page的值是否存在于$whitepage数组中,如果存在就返回ture。第二个是对page进行了一个截取操a作,在截取这里有两个函数,我在这里也讲一下

1.mb_substr()的定义是返回字符串的一部分,也就是所说的截取。

2.mb_strpos()的定义是查找一个字符串在另外一个字符串首次出现的位置。

所以结合起来,这里就是在page中找到?这个符号,并且将?之前的所有字符截取,这个时候page变量的新值就是截取出来的字符。


一些题解


第五段

后面进行了一次url解码以及又进行了于$whitelist对比的判断。

在hint.php文件中我们可以知道flag在的地方,所以构造请求(对?进行两次url编码,服务器端解码一次,代码里面又进行一次解码)

最终的请求:?file=hint.php%253f../../../../../ffffllllaaaagggg

一些题解


一些题解


原文始发于微信公众号(F1A4安全团队):一些题解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月25日23:59:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一些题解https://cn-sec.com/archives/841267.html

发表评论

匿名网友 填写信息