【教学】Upload-Labs Pass17关-全网最详细解题过程与思路

105 0
2021-12-8 20:33:03
显示全部楼层
Pass-17(二次渲染绕过)
新版第17关,全网最详细的解题过程与思路!
内容包括:代码解析,工具下载,解题思路,解题详细过程!
本关用到工具HxD(16进制编辑器)
HxD下载链接:https://redghost.cn/forum.php?mod=viewthread&tid=32
(点击即可跳转链接,请自行下载工具)
本关PHP版本必须是5.4,Apache服务器
推荐使用小皮面板2017(phpStudy2017)
本关思路:
二次绕过,第一次上传带php代码的图片时,里面的php代码会被删除掉,然后会生成一个新的没有代码的图片文件,下载已过滤的图片,进行二次修改,即可绕过本关,详情看解题
解题过程:
每个关卡该做的第一件事都是:查看提示,查看源码


提示了,本关重新渲染图片
查看源码,我们来一步一步解析内容

必须要记住这两个重点,待会要用到的!
filename 文件名称
filetype   文件类型(后缀)
看截图,详细解析了这些代码的作用
我们再进一步解析GIF这一块的代码


关于gif的整段信息已经解析完毕了
现在开始尝试过关
我们先给1.gif加个php代码试试
(因为这关要用到文件包含,所以为了更方便,就不写木马了)
我们给图片加一条
//输出php信息
现在来操作一下

命令为:copy 1.gif/b + 1.php/a 2.gif

保存后你的桌面会出现新的文件,后缀为.bat 这是我们的批处理文件
我们需要使用bat文件来将图片和php代码合并在一起,这就是图片马
然后新建个文本文档,再写入我们的php文件
和上面操作一样,另存为php后缀

好了,现在我们已经拥有这三件套了

copy 1.gif/b + 1.php/a 2.gif
解析:将1.gif 和 1.php 合并为 2.gif
也就是用二进制方式还是文本方式写文件
/a是用文本的方式 /b是用二进制的方式
这两者要区分,不然文件内容会有问题
双击bat文件,然后出现了一个2.gif


使用HxD打开2.gif(HxD是开头提到的16进制编辑器)
点击左上角的文件,点击打开,选择我们的2.gif
  

拉到最底下,发现我们的php代码与gif图片合并成功了

然后我们去靶场上传这张图片
会得到一个上传成功的页面反馈
(就是上传成功后,靶场会显示上传成功的图片)
右击图片,选择图片另存为,然后保存到桌面上





发现图片被随机定义了个新名字


用HxD打开2.gif,再打开被随机命名的gif
然后做一下比对,查找一下不同的地方




还有尾部对比,发现新图片没有php代码了



然后看第一张和第二张的对比,很显然
上面的部分是固定不变的
下面的部分是已经改变了的
就是因为下面部分会一直被改变,所以我们的php代码才会消失
然后
我们找到不改变的那一部分,然后在对应文本随机找一小串类似于符号的,在对应符号的末尾处插入我们的php代码



如图,这样输入,如果你打错了,按退格键出现这个提示,直接选“确定”


按Ctlr+S保存,或者按左上角然后选择全部保存



这时候你的桌面会增加一个.bak格式的文件,这个文件是修改之前的图片
算是个备份文件,没有用,我们要上传现在的.gif图片


修改过的gif图片在画质上会有瑕疵,但是不影响使用
现在我们去靶场,再次上传这个图片


将这个图片保存到桌面


这是我刚刚保存的图片,用HxD打开这张图片


发现我们刚刚插入的php代码都没有被过滤删除

本关需要用到文件包含(include.php)
在我们的靶场主目录里面,有个include.php这个文件

GET后面的是file,所以我们需要输入的是
include.php?file=文件名
include.php?qwe=文件名
已知我们刚刚保存的文件,是个随机文件名
所以指定自己的随机文件名即可
因为上传好的文件在upload这个文件夹里面
所以要在=号后面输入/upload/
因为upload是在主目录的下一级目录
(文件包含不会的,建议补补之前的课,喝个六个核弹补补脑)

发现访问成功了,而且输出的和我们写入的php代码一模一样
本关完成

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x