WarmUp|代码审计

这是一道HCTF2018的Web题

代码审计类型



打开题目


打开题目,一个滑稽。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进行了一个截取操作,在截取这里有两个函数,我在这里也讲一下

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

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

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

第五段

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,509评论 0 5
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • 爱上你的那一刻起,我就认定你是我的一辈子。 我们一起笑,一起疯,一起手牵手,一起说情话。 我们一起哭,一起丧,一起...
    三分钟热度7阅读 1,837评论 0 6
  • 第七十二章 凤九脸颊染上了红晕,半天说不出一句话,只是结结巴巴:“东华,你…..你怎么可以这样,这可是前殿。”凤九...
    琳达_linda阅读 184,209评论 12 75
  • 封了一个店铺,另外一个店铺有起飞迹象,感觉采集数据真是容易飞,证明爆款数据加多类目非常有用,下一步用裂变模仿就行了...
    写个锤子阅读 99评论 0 0