目录
Unsafe Filedownload
这一关主要是路径的问题,点击nba球员,但是抓包后改数据下成了我放在c盘的1.txt文件
原理是抓包后用通配符把相对路径切换到c盘目录下,分析一波源码看看怎么回事(这关源码简单易懂)
找到带nba图片的代码,可以看到都是在download目录下找到的png图片,稍微可以猜测用相对路径跳目录
分析下载的代码,确认传入参数前面拼接了download目录(选中的那行)
Unsafe Fileupload
client check
看题名猜测文件校验是在客户端进行,尝试上传一句话木马,发现弹窗
给一句话木马增加一个图片文件后缀
开启抓包,将文件名后的图片文件后缀删除,关闭抓包(看选中的那行)
看见成功上传,在当前目录下的uploads文件夹内
使用中国菜刀连接,口令rnmd
成功进入后台
看一波源码,文件校验通过前端方式,仅比对文件名称最后一个点后面的文件后缀是否与规定的三个文件后缀符合,因此可以使用前面步骤绕过校验
MIME type
开启抓包,直接上传一句话木马,HTTP协议使用MIME来标识数据类型就是那个Content-Type,暂时不改,直接通过会显示“上传的图片只能是jpg,jpeg,png格式的!”
把它改成image/png,关闭抓包
成功上传,后面的连接后台就不重复了
分析源码,可以看到允许的MIME类型只有三种图片格式
getimagesize
直接上传php文件会显示“上传文件的后缀名不能为空,且必须是jpg,jpeg,png中的一个”;这次在一句话木马前面加个GIF89a,后缀更改为jpg
上传成功后会把文件名更改为一大串数字,并放到以时间命名的文件夹,这次需要通过文件包含漏洞来连接菜刀,就是把url里的文件调用路径跳转到上传后的文件路径
连接菜刀,成功
略微复杂的步骤,原因是getimagesize()函数会检查文件开头格式是不是和文件后缀对应,通过文件包含漏洞依然可以实现解析图片内的php代码