行业知识
ctfshow WEB入门 文件上传151-170
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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
上一篇:数据结构试题