Ý tưởng của bài này khá là cơ bản, là một flag checker đơn giản với phần code là lua compiled. Do đó điều đầu tiên mình làm là decompile cái file checker
Okay, nó là lua version 5.4 nên mình dùng unluac thay vì decompiler khác:
Phần code khá là đơn giản, nó chỉ modified input và compare với buffer có sẵn, cho nên việc rev cũng khá là dễ dàng:
Đây là full script solve của mình:
Flag: BKSEC{Lua_len_fl@g,Long_nang_lang_lang}
Lần này đề cho 1 file PE, mình thử chạy trên vm thì nó vẫn là 1 flag checker đơn giản
Dùng IDA để decompile thì mình thấy cũng khá là đơn giản:
Tuy nhiên lúc mình debug thì nó không thực sự như vậy:
Tại 0x4012d3, thay vì nhảy sang nhánh bên trái (luồng thực thi chính) thì nó lại nhảy sang nhánh khác và raise exception -> chắc chắn có anti-debug.
Tuy nhiên không cần quá quan tâm tới anti-debug này, chúng ta chỉ cần cho nó quay về luồng thực thi gốc bằng cách chỉnh EIP.
Đoạn này cũng khá là đơn giản, dùng key "BKSEECCCC!!!" và xor với 1 buffer được tạo ngay sau đó:
Okay, từ đoạn này chỉ cần xor ngược lại là có flag:
Flag : BKSEC{e4sy_ch4ll_but_th3r3_must_b3_som3_ant1_debug??}
Bài này là một vm đơn giản, nhưng lần này vì chương trình khá bé nên mình cũng không thực sự cần viết 1 disassembler mà mình debug và lấy flag trực tiếp:
Đây là hàm main của chương trình nó đơn giản chỉ làm những công việc sau:
Vì mình biết nó khá là đơn giản nên mình đã nói ngay từ đầu là không viết disassembler nên mình đặt breakpoint ở tất cả các instruction:
Các instruction cũng khá dễ rev, có 2 type là word và byte, tất cả đều tương tác chung với 1 stack và dùng stack_pointer mà mình đã define.
Sau 1 lát debug thì mình thấy chương trình đã làm những thứ sau:
a
nó có giá trị là 0xC0Da
: a>>8b
lần đầu nó có giá trị là 0x2238and
để lấy high_byte của word này: b&0xff00c
:Việc đơn giản cần làm lúc này là lấy được số lúc trước khi xor và số lúc cmp
xor ngược lại sẽ ra được 2 kí tự của flag:
Okay, mình thử với 1 vài lần nữa thì vẫn như vậy, từ đây chỉ đơn giản tiếp tục vài lần nữa là ra flag, khá là nhanh thôi.
Flag: BKSEC{C0nGratul4t31}