[ACTF2020 新生赛]Include
考察利用php://filter伪协议进行文件包含
首先尝试php://input伪协议:
发现被过滤。
然后尝试使用php://filter伪协议来继续包含,
构造playloads:php://filter/read=convert.base64-encode/resource=flag.php
得到base码。
将其进行解码,得到flag。
[GXYCTF2019]Ping Ping PingPING命令其实就是用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。但其实我们这种题并不是真的让你去PING某个IP;而是让你利用终端去执行你想要的语句.
我们构造payload, ?ip=1| ls, 显示fxck your space, ?ip=1| system("ls") 显示fxck your symbol。
可以得知空格和一些符号被过滤掉了。所以我们构造?ip=1|ls, 得知有flag.php与index.php。
百度搜索到了几个过滤空格的方式:
1.${IFS}替换 2.$IFS$1替换 3.${IFS替换 4.%20替换 5.%09替换 6.
可以明显的看见我们的flag在下面,要得到我们的flag,需要突破前面三关,level1,level2,level3.
代码审计。
在level1里:
我们要满足intval($num) 2021。这就涉及到
intval函数的一个bug,对于科学计数法表示的字符串形如’2e4’,他会先转字符串再比较,判定他是2 而如果说是’2e4’+1,他会先进行计算,结果是20001,从而根据此弱点,突破level1.当然这跟php版本有关,只在某些特定版本有效,5.5.38有效。
在level2里:
我们要传进去一个参数md5,如果满足我们传进去的md5==其md5加密后的数,才继续进行。php中==如果两侧类型不同,会先转化为相同类型然后比较。0e开头,md5加密后还是0e开头,那么我们就认为这两个值相等.写个python脚本跑一下。
import hashlib
i = 0
while True:
text = '0e{}'.format(i)
m = hashlib.md5(text.encode('utf-8')).hexdigest()
print(text,m)
if m[0:2] == '0e' :
if m[2:].isdigit():
print('find it:',text,":",m)
break
i +=1
最终可知,构造md5=0e215963017即可。
在level3里:
传入get_flag=ls,执行system(ls)。可以发现flag位置。fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag。
因为cat和空格被过滤,所以我们要绕过cat命令,可以用tac,sort等等。
区别是cat是从第一行开始抓取,tac是从最后一行。空格可以用%09,$IFS$9,${IFS}绕过。
最终构造?num=2e4&md5=0e215962017&get_flag=tac%09fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag。得到最终flag。
[BJDCTF2020]ZJCTF,不过如此1
通过分析代码,get传入两个参数text和file,text参数利用file_get_contents()函数只读形式打开,打开后内容要与"I have a dream"字符串相匹配,才能执行下面的文件包含$file参数。 看到用的是file_get_contents()函数打开text参数,以及后面的文件包含函数,自然的想到php伪协议中的data://协议。 include($file)处的有next.php,我们传入file参数用filter获取一下next.php的源代码。构造payload:?text=data://text/plain,I have a dream&file=php://filter/read=convert.base64-encode/resource=next.php。
得到next.php的源代码为:
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?