Writeup WhiteHat GrandPrix 2016 - Bánh Xèo

Sugi_b3o

Moderator
Thành viên BQT
30/08/2016
317
446 bài viết
Writeup WhiteHat GrandPrix 2016 - Bánh Xèo
Sau cuộc thi WhiteHat GrandPrix 2016 đã kết thúc, mình xin chia sẻ cách giải bài Bánh Xèo - Crypto 100.
14899399531.PNG

Sau khi mở file, chúng ta nhận được một file Matrix.txt với một "rừng" các con số. Trong đó có nhiều số được lặp đi lặp lại nhiều lần,
14899399532.PNG


Mình thử tìm các số nào lặp đi lặp lại nhiều lần, thì vô tình thấy có vẻ tác giả đã sắp xếp các con số để tạo thành một hình gì đó :) :) .
14899399534.PNG

Ta thấy được giá trị cao nhất là "0377" và thấp nhất là "0". Thử convert "0377" sang các kiểu khác thì phát hiện ra.
14899399535.PNG

Dãy số 0377(8) -> 255(10) đây chính là màu đen trong bảng màu. Lúc này thì nhớ đến writeup bên IceCTF.
Nên mình đã thử theo cách đó :) và........ thành công.
HTML:
from PIL import Image

img = Image.new( 'RGB', (1050,1050),'white') 
pixels = img.load()
k = 0 
f = open("Matrix.txt","r").read().split("\n")
for i in f:
    i = i.split(" ")
    temp = ''
    for j in range(len(i)-1):
        temp += str(format(int(i[j],8),'08b')) # convert to binary
    for j in range(len(temp)):

        if ord(temp[j]) == ord('0'):
            pixels[k,j] = (255, 255, 255) # convert to black
        elif ord(temp[j]) == ord('1'):
            pixels[k,j] = (0, 0, 0) # convert to white
    k+=1
img.show()

img.save("result.jpg")
1489939953original.jpg

Scan và submit flag :) :) !!
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên