百度网站地图,seo诊断工具,做网站宁夏,庆阳网络营销pikachu的文件上传和upload-lab的文件上传
目录
mime type类型
getimagesize
第12关%00截断#xff0c;
第13关0x00截断 差不多了#xff0c;今天先学文件上传白名单#xff0c;在网上看了资料#xff0c;差不多看懂了#xff0c;但是还有几个地方需要实验一下#…pikachu的文件上传和upload-lab的文件上传
目录
mime type类型
getimagesize
第12关%00截断
第13关0x00截断 差不多了今天先学文件上传白名单在网上看了资料差不多看懂了但是还有几个地方需要实验一下有请我们pikachu靶场登场ok呀做题我爱做题我爱说实话 英文不会。先翻译一下搞错了pikachu好像没有文件上传白名单
没事的把这个靶场也打一遍
mime type类型 先看mime type教程MIME 类型 | 菜鸟教程 (runoob.com)这个也是非常简单意思是只对content-type的内容做了简单的验证验证是否为图片类型应该是后端验证吧毕竟传给服务器了ok呀这个好像前端验证都没有做直接可以选择php文件 好像还要把application改成imagecontent-type: image/png 蚁剑就不连了路径拼接就好了vul/unsafeupload/uploads/test.php你妹的被杀毒软件杀了我就说半天找不到文件了
pikachu还有一个文件上传的题目是这个
getimagesize
这个更简单了只需要在文件头加上个GIF89a的图片格式就好了 ok呀话不多说直接上uploads靶场第12关好吧
第12关%00截断
主要是用于get类型post类型由于不会url编码所以是0x00截断0x表示16进制
前置知识
利用条件参考文章WEB-00截断与%00截断 | wh1te (lddp.github.io)
利用条件
00截断的限制条件是PHP5.3.29且GPC关闭。%00截断
url中的%00只要是这种%xx的形式webserver会把它当作十六进制处理然后把16进制的hex自动翻译成ascii码值“NULL”,实现了截断burpsuite中16进制编辑器将空格20改成了00。本质上来说都是利用0x00是字符串的结束标识符进行截断处理。
ok呀也是不太明白但是我好像知道单引号在url会自动转化为%27
所以%27就是assci值中的单引号ok呀同理那%00就是assci值中的null字符
就不继续深入思考了明白了这个就开始做题
ok啊上传了个文件发现他自动把我文件名改了也只能上传jpeg、png格式的
把Content-Type: image/png改成这样也不行发现是 白名单上传 继续看代码在网上找的文章也是没看太懂啊 $img_path $_GET[save_path]./.rand(10, 99).date(YmdHis)...$file_ext;
网上说这是get就是%00是post就是0x00
12关源代码$is_upload false;
$msg null;
if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],strrpos($_FILES[upload_file][name],.)1);if(in_array($file_ext,$ext_arr)){$temp_file $_FILES[upload_file][tmp_name];$img_path $_GET[save_path]./.rand(10, 99).date(YmdHis)...$file_ext;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传出错;}} else{$msg 只允许上传.jpg|.png|.gif类型文件;}
}
但是burp又是post传过去的怎么又是get呢ok不想分析在去网上找一下没找到就时看 $img_path $_GET[save_path]./.rand(10, 99).date(YmdHis)...$file_ext;是get还是post
但是我在实战中怎么看他是post传参还是get传参 好了直接在要拼接的地方加上我们的test.php%00后面随机产生的名字就被忽略了 第13关0x00截断
ok呀好像发现了这一关和上一关不一样这一关好像是在代码里面上一关在url头中
按照这么理解的话在url头中是get传参代码里是post传参吗
先在php里加上个a然后再hex找到a把61改成00记着要把test.php改成test.png因为后端会检测图片的格式但是他又会拼接内容如果他不拼接路径是不是就没有这个漏洞了 我把a的61改成00了这里是16进制00也就是0x000x就是16进制的意思 然后后面的要拼接的路径都被0x00忽略了最后就是test666.php了 上传成功