[CodeEngn] Basic RCE – Level 20

http://codeengn.com/challenges/basic/20

This program needs a key file.
What does the data in the file crackme3.key have to be to make it print the above message.
Ex) 41424344454647
(This problem has multiple answers, so post your answer on the messageboard in a private thread and we will verify it for you.)

Bài này hơi dài dòng, nếu so với các bài trước đó. Chúng ta sẽ mở nó trong IDA, kết hợp giữa việc debug và đọc code để hiểu xem nó làm gì. Kết quả có thể để như sau:

Thông tin tóm tắt:

  1. Đọc 18 byte từ file CRACKME3.KEY.
  2. Can thiệp 14 byte đầu, tính tổng của các giá trị thu được bằng việc XOR 14 byte này lần lượt với các giá trị từ 65 đến 78.
  3. XOR tổng thu được với 0x12345678, chuyển kết quả về ASCII.
  4. So sánh với 4 byte cuối trong 18 byte ở trên (little-endian).

Chúng ta sẽ đi theo một hướng mất ít công sức thôi, vì giờ cũng khuya rồi.

Tạo file CRACKME3.KEY có nội dung:

123456789012345678

Đặt BP tại 00401093:

F9 và xem kết quả:

Trong đó EAX = 38373635 chính là 5678 – 4 byte cuối đọc từ file của ta, còn 12345022 sẽ là giá trị ta cần để đạt được goodboy. Tiến hành thay đổi 5678 bằng x22x50x34x12. Chạy lại:

---------------------------
Good work cracker!
---------------------------
Cracked by: pppppppppzz~~z!
Now try the next crackme!
---------------------------
OK   
---------------------------

Bài này có nhiều đáp án, nên sẽ không có → flag = xxx. như mọi khi nữa. :xô xát: too_sad

 

 

[CodeEngn] Basic RCE – Level 19

http://codeengn.com/challenges/basic/19

How many milliseconds does it take for this program to terminate

Nhìn cái icon biết ngay là AutoIT, mở bằng Exe2Aut:

Đổi từ 11.12 giây qua mili giây, công thức là x = y * 1000.

→ flag = 11120.

[CodeEngn] Basic RCE – Level 17

http://codeengn.com/challenges/basic/17

What is Name when the Key is BEDA-2F56-BC4F4368-8A71-870B
Hint : The name is 1 letter and it could be either alphabetic or numeric.
Verify your solution with the MD5 value of the Name.

Không pack, không gì cả, là một đoạn code rất tươi sáng trong mắt người xem:

Đặt BP ở 0045BBA4, F9, nhập username:key = yeuchimse:123456, nhấn Check it!:

Khá là dễ chịu vì ta thấy ngay được goodboy.

Có khá nhiều hướng cho bài này, và hướng mà mình chọn để đáp ứng cho cái nhu cầu lười biếng của mình là… dò bằng tay emo_popo_beat_brick

Tuy nhiên cũng phải tỏ ra là ta đây có chút kiến thức, nên mình sẽ patch để goodboy được show ra ngay ở badboy, thay vì cứ chạy rồi dừng ở BP emo_popo_sure

Dò một hồi thì ra Name = F.

→ flag = 800618943025315f869e4e1f09471012.

 

[CodeEngn] Basic RCE – Level 14

http://codeengn.com/challenges/basic/14

Find the Serial when the Name of CodeEngn
(This problem has several answers, and the answer should be a 5 digit number. Brute forcing is required.)
Ex: 11111

Packer là UPX, tiến hành unpack và mở bằng OllyDbg, dễ dàng tìm được gooboy:

Đặt BP ở 0040133A và F9, điền username:key= CodeEngn:123456, nhấn Check:

Trong đó thấy ngay EAX = 0x001E240 = 123456 chính là key ta nhập vào, vậy thì ESI = 0x0012D91 = 76193 là…

“Brute forcing is required”? feel_good

→ flag = 76193.

[CodeEngn] Basic RCE – Level 13

http://codeengn.com/challenges/basic/13

Find the answer

Kiểm tra bằng PEiD thấy viết bằng .Net, dùng Reflector để mở:

Dùng Visual Studio để chạy, thấy plainText = Leteminman.

→ flag = Leteminman.

[CodeEngn] Basic RCE – Level 12

http://codeengn.com/challenges/basic/12

You will see a success message after finding the key.
If you would want the Key itself to replace the success message in the MessageBox,
open up a Hex Editor and overwrite the key value in the offset range 0x???? ~ 0x????.

Q : find the key value and the offset range and write the solution in this format : key????????
(first ???? for the start and the next 4 ?s for the end).

Dễ dàng thấy ngay được goodboy cũng như quá trình kiểm tra:

Key = 0x7A2896BF = 2049480383.

Mở trong một hex editor bất kỳ, search goodboy:

Tiến hành thay thế nó bằng giá trị của Key (lưu ý rằng có byte x00 ở cuối):

Kiểm  tra lại và thấy rằng toàn bộ vùng thay thế nằm trong khoảng từ 0D3B đến 0D45 (tính cả null-byte).

→ flag = 20494803830D3B0D45.