# Write-Up L4G – CSTV ## 1/ Sửa file PNG File đầu khi đưa lên hexed.it thì mình nhận thấy 'NG', mình đoán đây là file PNG bị crash nên mình sẽ chỉnh lại. Đầu tiên là sửa header và chunk IHDR ![image](https://hackmd.io/_uploads/Bk_3716uT.png) Đổi thành : 89 50 4E 47 (header) và 49 48 44 52 ( IHDR) ![image](https://hackmd.io/_uploads/r1wHzyTdp.png) Dùng PNG check thì thấy có lỗi ở trunk gama -> đổi lại thành : 0B FC 61 05 ![image](https://hackmd.io/_uploads/SyJ8M16OT.png) Chunk IDAT bị sai cú pháp -> đổi thành 49 44 41 54 ![image](https://hackmd.io/_uploads/BJhUfkTdp.png) Chỉnh length của IDAT, length của IDAT là 4 byte phía trước ‘IDAT’ Length = offset đầu của đoạn IDAT kế tiếp – offset đầu của IDAT hiện tại ( ko tính length) – 0x08 = 0x10004 – 0x57 – 0x08 = 0xffa5 Và đây là tất cả các byte chỉnh sửa: ![image](https://hackmd.io/_uploads/ByMwGypuT.png) Mình có viết một đoạn code để fix ảnh mặc dù nó cũng chẳng nhanh hơn fix tay bao nhiêu :+1: ```python= def modify(file_path,output_path): try: with open(file_path, 'rb') as file: content = bytearray(file.read()) content[0x01] = 0x50 content[0x03] = 0x47 content[0x0c] = 0x49 content[0x0e] = 0x44 content[0x3a:0x3e] = [0x0B, 0xFC, 0x61, 0x05] content[0x53:0x55] = [0x00, 0x00] content[0x56] = 0xA5 content[0x58] = 0x44 content[0x5A] = 0x54 with open(output_path, 'wb') as file: file.write(content) except Exception as e: print(f"Error: {e}") modify('C:\\Users\\phgvee\\Downloads\\3y3L4g','C:\\Users\\phgvee\\Downloads\\fixed.png') ``` ## 2/ Decode Sau khi chỉnh ảnh thì mình thu được ảnh như sau ![image](https://hackmd.io/_uploads/Hk0wMJ6_6.png) Bài này nó còn cho thêm một file .wav có mã morse, mình ngồi decode ra thì nó ra như này : WH4TY0UH34R1SN0TWH4TY0US33KF0R Đối với bài này thì mình không rõ hướng đi nên mình thử tất cả các cách có thể làm đối với file ảnh và wav, cuối cùng thì mình dùng steghide trên file wav với pass 123321232123 thì ra được một file txt: ![image](https://hackmd.io/_uploads/S1PuMJada.png) ![image](https://hackmd.io/_uploads/SknOGypda.png) Biết là BrainFuck nhưng decode hoài hong ra , nhìn lại cái ảnh thì thấy chữ viết dọc nên đoán là cái brainfuck nên viết dọc lại và decode, mình dùng script sau để chỉnh : ```python def read_and_process_columns(file_path): columns = [] with open(file_path, 'r') as file: lines = file.readlines() for line in lines: for i, char in enumerate(line.rstrip('\n')): if len(columns) <= i: columns.append([]) columns[i].append(char) for i, column in enumerate(columns): print(f"{''.join(column)}",end="") file_path = 'Br41nL4g.txt' read_and_process_columns(file_path) ``` Và đây là kết quả : ``` ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>++.++++++.-----------.++++++.<------------.>+++++.<------.>-----..++.+++++.-------.--------.<-.>+++++++++++++++++++++++.<.>----.+++++++.--.---------------.<.>++++++++++.<......... ``` Giơ đem đi decode ở [tools](https://www.dcode.fr/brainfuck-language) này thì ra kết quả : ```flag:l4gging_3v3rywh3r333333333```