Bài đầu tiên nhiều người giải nhất : Vignere
Vigenre ? Nhìn qua thấy được là k có 12 kí tự. Mà nhờ có 8 kí tự SECCON{} nên sẽ tính được 8 kí tự đầu của key là VIGENERE. Còn 4 kí tự sau thì brute force rồi kiểm tra với md5 thôi
Code : http://pastebin.com/UDZwC1Uv
Key : VIGENERECODE
flag : SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}
Memory Analysis
file : http://files.quals.seccon.jp/memoryanalysis.zip
Bài này làm khá ngáo =)). Không đổi domain thành IP làm không ra (Tks Khánh =)) )
Kiểm tra file trước
Thêm cái hint là xem file hosts với thêm 1 cái nữa là file svchost fake
dump 2 file đó ra
Kiểm tra 2 file thấy được ip bị chuyển tới và url của nó
Curl và flag đây rồi :
flag : SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}
Anti-Debugging
file : http://files.quals.seccon.jp/bin
Kiểm tra là file bin: PE32 executable (console) Intel 80386, for MS Windows
Bật ida lên xem qua : main http://pastebin.com/w5T5sHnU
Chú ý có đoạn này
- printf("Input password >");
- v3 = (FILE *)sub_40223D();
- fgets(&v23, 64, v3);
- strcpy(v21, "I have a pen.");
- v22 = strncmp(&v23, v21, 0xDu);
- if ( !v22 )
- {
- puts("Your password is correct.");
....
ủa vậy là flag là "I have a pen." à ? Tất nhiên là k phải (đã thử submit =)) ). Cái này chỉ để kiểm tra rồi nó chạy xuống thôi.
Nhìn hết hàm main mà chả có gì đáng chú ý ngoài mấy cái check debug. Chuyển sang graph xem.
Chú ý có cái này (Tks Khánh again =)) )
loc_401652:
mov [ebp+var_78], 0
cmp [ebp+var_78], 1
jnz loc_40174D
Dòng trên làm nó luôn nhảy vào loc_40174D (nhánh bên phải). Vậy check xem nhánh bên trái xem sao.
Đại khái là có một chuỗi khác rồi nó làm này nhọ gì nhức óc lắm vì vậy nên mình patch lại file bin này. Chuyển byte 1 ở trên thành cmp với 0 => vậy nó sẽ nhảy về nhánh bên trái
Chuyển sang hex view xem (Bôi đen dòng đó rồi chuyển sang hex view sẽ thấy )
Rồi bật hex editor lên chuyển thành 83 7d 88 00 thôi
file path : https://drive.google.com/file/d/0B-QPcxnExPUcamRLWGx6amRQVHc/view?usp=sharing
Run (Nhớ tắt mấy trình debug)
Flag : SECCON{check_Ascii85}