ics-06
打开题目环境,根据题目描述,关注点锁定在报表中心(其他地方点了也没有内容)
进入报表中心
发现url中有id=1,第一时间想到sql注入,但尝试了单引号,双引号等多种方式都没报错,暂时排除sql注入。
然后发现id的值只要是数字,就返回一样的页面,说明这个页面真实存在(id的参数为字母或其他特殊字符时会跳转到id=1的页面)
那就有可能存在某个id的值,返回的页面和这个页面不同
用burp进行爆破
设置变量
设置爆破的数字字典
跑出来id=2333时返回页面不一样
访问id=2333的页面,得到flag
cyberpeace{68261900ad39ca03319baeaa4a6eba7c}
warmup
打开环境,是个大滑稽
第一反应可能是查看源码,发现被注释的一个php文件
访问这个php文件,出现了php代码,看来又是一道php代码审计的题
看代码,首先注意到另一个php文件
访问一下,看起来是一个提示,告诉我们flag在哪
再回来分析PHP代码,先看最下面一段
如果满足下面三个条件,就可以执行我们传入的 file 文件,我们已经知道要传入什么了,当然是要传入提示中的ffffllllaaaagggg
条件一:! empty($_REQUEST[‘file’] 传入参数是否为空
条件二:is_string($_REQUEST[‘file’]) 传入的参数是否是字符串
条件三:emmm::checkFile($_REQUEST[‘file’]) 是否符合自定义函数checkFile,这个自定义函数就是上面的一大段代码
以上三个条件中,前两个条件已经符合了,所以我们直接来看第三个条件,去看这个自定义函数都需要满足哪些条件
先看第一段
第一行:设置了个白名单,只包含了source.php 和 hint.php
第一个if:如果传入的值为空或者不是字符串,输出:you can’t see it
第二个if:检查传入的page是否在白名单中,是的话返回true
然后是第二段
首先看一下mb_substr()函数的作用
因为要截取?之前的内容,那么除了传参所需要的?之外,我们还要构造一个?用来符合截取的if判断。那么假如我们构建的pyload是
ip/?file=source.php?ffffllllaaaagggg
那么这段的作用就是将source.php?ffffllllaaaagggg中?之前的内容取出来,并赋值给$_page,然后判断$_page是否在白名单中
第三部分
除了多了一个url编码,其他的跟第二部分一样。那么我们只需要将最后的pyload用url编码加密两次就行了(网页解密一次,函数解密一次)
这个自定义函数中总共出现了四个if判断,满足一个即可返回 true,若均未满足,则返回 false
最后我们利用include的文件包含漏洞,构造出最后的pyload
文件包含四层可以通过ffffllllaaaagggg猜出来,猜不出来也可以手动试出来。
pyload(source.php可以换成hint.php)
http://111.200.241.244:49711/?file=source.php?/…/…/…/…/ffffllllaaaagggg
flag{25e7bce6005c4e0c983fb97297ac6e5a}