php代码审计前奏之ctfshow之文件上传

作者:李芯w
围观群众:53
更新于
php代码审计前奏之ctfshow之文件上传

php代码审计前奏之ctfshow之文件上传

想搞好代码审计,必须要搞懂其中一些危险函数危险应用,以及过滤不足,

故以 CTF 来练习。

web151~前端验证

直接抓包修改后缀。

web152~前端+MIME

直接抓包修改后缀。

web153~.user.ini

https://www.php.net/manual/en/ini.list.php

使用条件:

(1)服务器脚本语言为PHP 服务器使用CGI/FastCGI模式

(2)上传目录下要有可执行的php文件

使用方式:

  1. 上传一张图片马

  2. 上传 auto_prepend_file=ma.png

  3. 访问同级目录中的一个php文件。

本题目中有 ,所以可以操作。

题目配置可以从http相应包得到。

web154~文件内容过滤php

上来测试发现是黑名单过滤的。

我们还可以上传 ,并且真好存在。

那么我们上传一张图片马,

发现被拦截了。

猜测可能是拦截了 php 字符串。那么我们删掉他试试,果然上传成功。

那么我们呢绕过就可以了。

web155~文件内容过滤php

测试正常的 png 图片可以上传。

对图片内容过滤

绕过

步骤跟上关一样。。。。。

web156~过滤 php, [

测试,又是文件内容过滤了 .

紧接着发现事情没这么简单,还过滤了,这给传参造成了一定的困难。

但是我们可以直接

web157~过滤分号

nginx/1.18.0 (Ubuntu) PHP/5.6.40

php代码审计前奏之ctfshow之文件上传

文件名黑名单

经测试,对文件内容过滤了 、、、

上传

我们知道 php 最后的语句也可以不加分号的,前提是得有 结束标志。

上传

访问

web158~过滤分号

和web157解法相同。

web159~过滤括号

经测试,对文件内容过滤了 、、、 、

问题不大,不能用函数了。

那我们用反引号代替system()

web160~过滤反引号,包含日志

经测试,对文件内容过滤了 、、、 、 、 反引号 、空格。

好家伙。包含日志文件,但发现 也被过滤了。那就进行拼接。

上传后,在上传

看到页面回显,确实包含了。

想着直接浏览器访问 url 路径带上一句话,但是却被编码了

还是再UA出比较好。

修改UA

然后成功getshell.

web161~检测文件头

发现只有文件内容异常的图片已经上传不上去了。猜测应该是对文件头进行了检测。

上传 成功绕过,但是这里文件内容测试只有两个字符的时候还不能上传。。。。。所以多放点字符。

php代码审计前奏之ctfshow之文件上传

其余操作和上官相同。

web162~包含session文件

测试,这关也检测了文件头,但是同时过滤掉了 点

我们可以看到这样绕过

php代码审计前奏之ctfshow之文件上传

.user.ini :

但上传文件,同样不能包含日志文件。这时候就需要包含session文件了。

这里还过滤了

上传

那么我们就开始构造,session文件竞争包含。

构造

一直上传,内容为写后门到

然后一直包含session文件。

可以看到成功包含,那么此时我们去,成功访问,并测试后门成功写入。

可以参考文件包含篇:

还有 利用session.upload_progress进行文件包含



web163~包含session文件

过滤还是前面的过滤。

操作和上关一样的。

这里有,所以我们其实可以直接利用此文件包含Session文件。

上传:

然后就开始session文件竞争上传和包含。

成功。

这是题目源码:

web164~png二次渲染

测试了一下。

白名单验证。

找了一张测试可以成功上传png图片。

还发现

可以随意修改图片又会被检测,故做图片马。

但是一般的图片马还绕不过,应该是做了二次渲染。

所以可以上传二次渲染绕过的图片,在做文件包含即可。

生成脚本:

web165~jpg二次渲染

测试只能上传 jpg.

也是二次渲染,当我们写后门进图片是,后台会自动检测并删除数据。

那么就用到 jpg二次渲染绕过了。

拿脚本

先上传一张图片,然后下载下来,然后利用脚本生成。

再继续上传,

发现这张图片不行,再来一张。

php代码审计前奏之ctfshow之文件上传

成功。

php代码审计前奏之ctfshow之文件上传

需要注意的是,有一些jpg图片不能被处理,所以要多尝试一些jpg图片.



web166~zip文件上传包含

尝试多次,发现zip 文件可上传。

但是上传直接编辑后门一句话的压缩包。

web167~.htaccess

但这只是前端限制。

可以看到,只允许jpg上传。

抓包测试了一下,是黑名单。

php代码审计前奏之ctfshow之文件上传

开局有个提示

测试apache解析漏洞没解析。

测试成功。

然后上传带有马的 即可。

但是这里浏览器响应回来的是 nginx呀,坑。

web168~后门免杀

测试,会检测、。

可抓包后修改直接上传php文件。

反引号

反引号达到命令执行的效果。

把源码拔下来

本来还想着包含一波日志。

字符拼接

$_REQUEST

数学函数

这里

其他函数构造

web169~.user.ini包含日志

测试发现

抓包需修改

文件名后缀随意。

看看文件内容过滤了啥 <> ? 等等。

只能进行 日志文件包含了。

思路: 上传

然后随便上传个php文件即可。

然后改UA为一句话即可。

web170

测试上传zip,抓包修改,后缀为, MIME类型为.

包含

日志文件

php代码审计前奏之ctfshow之文件上传

非特殊说明,本文版权归 林茶心热点网 所有,转载请注明出处.

本文分类: 资讯

本文标题: php代码审计前奏之ctfshow之文件上传

本文网址: http://linchaxinxi.com/zixun/170.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。