[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.

 

[CodeEngn] Basic RCE – Level 10

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

After finding the OEP, find the OPCODE of the branch instruction going to the “goodboy routine”
The solution should be in this format : OEP + Serial
EX) 00400000EB03

Kiểm tra bằng PEiD, Packer là ASPack 2.000. Google cách unpack, ta có các thao tác sau để đến OEP:

  1. F8, chuột phải ESP > Follow in Dump.
  2. Quét chọn 2 byte đầu, chuột phải > Breakpoint > Hardware, on access > Word.
  3. F9, F8, F8, F8.

Ta đã dừng tại OEP = 00445834:

Chuột phải > Search for > All referenced text strings, thấy ngay goodboy. Nhấn vào để tìm câu lệnh nhảy quyết định:

Nó nằm ở 004454D4, với OPCODE = 75 55.

→ flag = 004458347555.

 

[CodeEngn] Basic RCE – Level 09

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

Find the StolenByte
Ex) 75156A0068352040

Kiểm tra bằng PEiD ta thấy Packer là UPX. Đặt BP tại câu lệnh JMP huyền thoại ở 00407387, F9, F8:

Một dãy dài những dòng bị NOP chính là các byte ta cần tìm, vì hàm MessageBoxA nhận đầu vào là 4 tham số chứ không phải 1. Quay về 00407387:

Ta thấy từ 0040737A đến 00407384 là rác, còn lại có 3 lệnh PUSH ở trên phù hợp những thứ ta đang tìm. Nếu thử ghi đè những byte đó vào các dòng bị NOP ở trên, ta thấy chúng trùng khớp:

→ flag = 6A0068002040006812204000.

 

[CodeEngn] Basic RCE – Level 07

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

Assuming the drive name of C is CodeEngn, what does CodeEngn transform into in the process of the serial construction

Lần theo goodboy, ta thấy đoạn mã kiểm tra như sau:

Có thể đọc code, cũng có thể debug, ta có được trình tự thực hiện:

  1. Lấy DriveName của ổ C (biến X)
  2. Ghép với xâu 4562-ABEX
  3. Thực hiện 2 lần thao tác: Tăng 1 đơn vị của mã ASCII đối với 4 ký tự đầu của X. Như vậy về bản chất là tăng 2 đơn vị.

Các quá trình sau không còn thuộc về yêu cầu của bài này, chúng ta sẽ bỏ qua. Bước 2 cũng không liên quan trực tiếp đến X, ta cũng bỏ qua.

Như vậy: CodeEngn được chuyển thành EqfgEngn.

→ flag = EqfgEngn.