web 21——弱口令爆破&custom iterator
進去要求輸入賬號密碼,賬號輸入admin
,一般來說管理員使用者名稱都會是這個,密碼隨便輸,然後burpsuite抓包
可以看到賬號密碼在Authorization
傳輸,形式是賬號:密碼
的base64加密,把他發到Intruder
模組
模式選sniper
,因為要對整個賬號密碼字元進行加密,不能分開爆破,選中要爆破的地方
選擇custom iterator
模式,在位置1寫入admin
,分隔符寫:
位置2匯入提供的字典
新增base64
加密,取消選中Palyload Encoding編碼,因為在進行base64加密的時候在最後可能存在==
這樣就會影響base64加密的結果
開始攻擊,點選狀態碼進行篩選,找到爆破出的密碼,將密碼解密後為shark63
,輸入即可得到flag
web 22——子域名爆破&oneforall
OneForAll,是 shmilylty 在 Github 上開源的子域收集工具,可以實現對子域名的爆破
python oneforall.py --target ctf.show run
可以看到爆破出了很多結果,不過這題的域名失效了,不然應該會有一個flag.ctf.show
web 23——md5爆破&burp&python
看一下程式碼,透過get
方式提交一個token
引數,要求MD5 加密結果的第 2 位、第 15 位、第 18 位字元是否相等,且這三位字元的數字之和除以第 2 位字元的值是否等於第 32 位字元的數字值
方法1——burpsuite爆破
不管他到底什麼條件,直接burpsuite爆破數字0-500,發現422的時候返回長度不同,422就是滿足條件的
方法2——python指令碼爆破
透過遍歷二字元的字串,尋找符合條件的字串,得到兩個可用字串3j
和ZE
import hashlib
dic = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for a in dic:
for b in dic:
t = str(a) + str(b)
md5 = hashlib.md5(t.encode('utf-8')).hexdigest()
if md5[1] == md5[14] == md5[17]: # 確保這些位置的字元相同
# 確保這些字元是數字
if 48 <= ord(md5[1]) <= 57 and 48 <= ord(md5[14]) <= 57 and 48 <= ord(md5[17]) <= 57:
# 確保md5[31]也是數字,並符合數學關係
if 48 <= ord(md5[31]) <= 57:
num1 = int(md5[1])
num14 = int(md5[14])
num17 = int(md5[17])
num31 = int(md5[31])
# 判斷除數是否為零
if num1 == 0:
continue # 跳過當前迴圈
if (num1 + num14 + num17) / num1 == num31:
print(t)
web 24——初探偽隨機數
本題考察的是php偽隨機數,透過mt_srand(1);
播種後,再透過同一隨機數演算法計算出來的隨機數值是固定的,因此只要看一下伺服器php版本,然後在本地起一下以下程式碼就可以得到隨機數了,各位師傅也可以嘗試重新整理,會發現每次給出來的值都是同一個。
<?php
mt_srand(372619038);
echo "隨機數:".mt_rand();
?>
web 25——偽隨機數&種子爆破
要獲得flag,必須輸入token
為第二、三個隨機數的和,因此必須知道seed
是什麼
傳入?r=0
就可以獲得第一個隨機數的負值,為-449307572
接下來就要爆破seed
,這裡我們使用php_mt_seed工具,下載與使用方法請自行百度。可以看到爆出來很多seed
,由於php版本不同產生的隨機數會略有區別,因此需要選擇與伺服器php版本對應的seed
看一眼php版本,選擇1103714832,這裡可能得幾個都試試,博主試了後兩個都沒出來
寫個php指令碼輸出需要的隨機數
<?php
mt_srand(1103714832);
echo mt_rand()."\n";
$result = mt_rand()+mt_rand();
echo $result;
?>
提交r
和token
,得到flag
web 26——資料庫密碼爆破
本題還是弱口令爆破,就是換到了系統安裝的場景,直接對密碼進行數字的爆破即可,答案是7758521,爆破的量還挺大的
另外這題的程式碼邏輯有點問題,什麼都不填點安裝然後抓包就會發現flag直接在返回包裡了,不過這樣就沒有爆破的味道了,還是建議按上面的方法爆一下
web 27——入口網站爆破
看到一個登陸介面,但是現在啥資訊都沒有,肯定不能直接爆破,看到下面有錄取名單和學籍資訊查詢系統
看到這裡,猜測是爆破身份證號(這裡是生日被隱藏了),然後透過錄取查詢獲得密碼
抓包,這題很奇怪,火狐好像很難抓到包,要麼用谷歌抓,或者用火狐一直點,總歸能抓到。給對生日進行爆破,payload型別選日期,選擇開始與結束的年月日,選擇日期格式,y代表年,M代表月,d代表日
找到長度不同的資料包
返回資訊需要Unicode解碼一下,結果給出學號和密碼,登陸得到flag
# 原始字串
encoded_str = r"\u606d\u559c\u60a8\uff0c\u60a8\u5df2\u88ab\u6211\u6821\u5f55\u53d6\uff0c\u4f60\u7684\u5b66\u53f7\u4e3a02015237 \u521d\u59cb\u5bc6\u7801\u4e3a\u8eab\u4efd\u8bc1\u53f7\u7801"
# 使用 unicode_escape 解碼
decoded_str = encoded_str.encode('utf-8').decode('unicode_escape')
print(decoded_str)
web 28——目錄爆破
看到url是/0/1/2.txt
,猜測是對目錄中的數字進行爆破,刪掉2.txt,對0
和1
爆破,用cluster bomb
模式
設定payload set 1和2都為數字0-99
爆破,找到能訪問的目錄,看一眼返回包就是flag