Writeup WhiteHat GrandPrix 2016 - Bánh Xèo

Thảo luận trong 'Writeup WhiteHat Grand Prix' bắt đầu bởi Sugi_b3o, 27/12/16, 11:12 PM.

  1. Sugi_b3o

    Sugi_b3o Moderator Thành viên BQT

    Tham gia: 30/08/16, 10:08 AM
    Bài viết: 309
    Đã được thích: 238
    Điểm thành tích:
    43
    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. [​IMG]
    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, [​IMG]

    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ì đó :) :) .
    [​IMG]
    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. [​IMG]
    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")
    
    [​IMG]
    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