第十一关(双写)
源码分析
他这个是直接将上边数组存在的后缀名替换为空了,所以我们可以双写上传
抓包防包
发现上传成功了
第十二关(get型%00截断)
源码分析
白名单机制,但是$img_path直接拼接,因此可以利用%00截断绕过。
可以使用00截断,php后空格十六进制的20改为00
条件:php版本小于5.3.4 2、php.ini的magic_quotes_gpc为OFF状态
知识点:这里利用的是00截断。move_uploaded_file函数的底层实现类似于C语言,遇到0x00会截断。
抓包分析
发现上传成功
发现php文件和jpg的文件都上传上来了
然后再连接测试
不再赘述
第十三关(post型%00截断)
源码分析
发现和上一关差不多,但是这个是用post传参的
发现这关和十二关不同的是这次的save_path是通过post传进来的,还是利用00截断,但这次需要在二进制中进行修改,因为post不会像get对%00进行自动解码。
咱们抓个包看一下
然后发送
然后将刚才构造的语句复制到bp下的Decoder模块下进行二进制分段
因为p的二进制是70,-的二进制是0a
然后在70和0a之间进行二进制分段,点击insert byte按钮进行分段
然后将分段完成的直接复制到
然后再进行发送
发现上传成功
发现上传成功
或者有一个简单的方法
直接编码然后防包或者发送给重法器都可以
也能成功
第十四关(图片码上传)
可以看到第二行的源码,然后只读两行
我们可以将一句话木马前边加上进行构造GIF89a。
也可以用图片码
unpack() 函数从二进制字符串对数据进行解包
我们首先要构造一个图片码
然后上传
发现上传成功
然后我们利用文件包含漏洞进行解析
http://127.0.0.1:8086/upload/include.php?file=./upload/2820201223130544.jpg
然后解析完成之后直接复制路径,然后用蚂蚁连接
发现成功
第十五关()
源码分析
getimagesize — 取得图像大小
image_type_to_extension — 取得图像类型的文件后缀
第一行是获取图像大小
然后第二行是获取后缀
就是大概的意思是判断这个文件是否为图片
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。
http://127.0.0.1:8086/upload/upload/6420201223134131.gif
上传了一个gif的文件
然后我们再利用和14关相同的方法去包含解析
第十六关()
源码分析
exif_imagetype — 判断一个图像的类型
这一关需要开启php_exif模块。phpstudy很好打开此模块。
同前两关
同样的开启这个模块之后上传一个图片,再文件包含,即可连接成功
http://127.0.0.1:8086/upload/upload/8820201223135032.jpg