小工具知识网

当前位置: 首页 > 行业知识 > ctfshow WEB入门 文件上传151-170

行业知识

ctfshow WEB入门 文件上传151-170

2026-11-13 01:15:26 来源:互联网转载

162&163

等我把文件包含学完来补充。

164.PNG二次渲染

因为发现URL是?image=的形式,疑似有图片包含点,先尝试data 伪协议包含

有回显图片错误而不是404,也说明了这里是图片包含点。

在上传图片尝试中,发现了后端对图片有二次渲染,即修改其中很多内容。

且这道题对图片内容也有检测,也就是说不能像之前的题给它传一个图片头就完了,要有合法的图片内容。

我还尝试了对比上传两张图片的内容,在非修改处的地方进行插入木马,但是错了,不知道是因为我操作上有问题,还是说这样会导致图片内容不完整。

要方便操作,可以用到这个脚本生成一张即有完整内容格式,又包含木马的图片

 

p数组中是给图片的颜色资源,整体上说就是依据p生成出来的图片包含木马:

至于这个脚本是怎么绕过二次渲染,我也不能完全理解脚本原理,也许是根据P数组创造图片马能符合二次渲染不被渲染到的规律?这里希望能得到大家的指点。

上传生成的图片,成功访问,抓包到上传的图片内容:

说明里面的后门代码生效了,且内容在图片内容里面,抓包或者010editor等里面才看得出来,浏览器看不出来。

开始常规操作:

得到flag。

但是当我传递0=eval,然后1=system()这种类型的时候,会对eval进行报错。

原因:PHP对于 a ( ) 的函数形式称为可变函数,如果 a()的函数形式称为可变函数,如果 a()的函数形式称为可变函数,如果a是函数才可被调用,不是就会报错。而eval是一个语言构造器,而不是函数,就会报错。且在php7.1以上,assert也变成了语言构造器,也会报错。

这里附上这两篇文章:

动态调用函数时的命令执行对于eval()和assert()的执行问题_cannot call assert() with string argument dynamica-CSDN博客和assert()的执行问题_cannot call assert() with string argument dynamica-CSDN博客")

https://www.cnblogs.com/0daybug/p/12610834.html

165.JPG二次渲染

其他的和上题一样,只是这道题要用到JPG的二次渲染。

要用这个脚本运行:

​

使用方法:在同一文件夹下放入这个脚本和图片,打开cmd命令:php jpg.php 1.jpg

图片要上传后经服务器渲染后再来运行脚本,这样可以使渲染修改得最小。

我用了十多张图片,才找到一张能拿后门的

其他的要么是这种:

要么是这种:

然后最后常规操作得到flag。

166.zip

上传一个zip格式文件,写下后门代码

点击 下载文件 进行抓包

这里我的后门代码给的是post一定要把请求方法改成post(URL前面的),我以前一直没有注意这个细节,想来有很多莫名其妙的问题多半是因为这个。

然后常规操作。

167. htaccess配置文件

将AddType application/x-httpd-php .txt写入.htaccess配置文件。

意为将.txt文件解析为.php文件。

所以如果能上传这个文件,就不需要前面的文件包含漏洞来配合文件上传。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

上一篇:数据结构试题

下一篇:四川无人机测绘 无人机测量 无人机航测服务