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

[CodeEngn] Basic RCE – Level 06

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

Unpack, and find the serial. The solution should be in this format : OEP + Serial
Ex) 00400000PASSWORD

Kiểm tra thấy bị pack bằng UPX. Lần này thì chúng ta sẽ unpack bằng đồ chơi chính hãng của công ty:

Chạy với tham số -d, thu về file xì tin để load vô OllyDbg:

FliC3DB

Ghi nhớ OEP = 00401360.

Chuột phải > Search for > All referenced text strings:

Fli3045

Thử luôn với key = AD46DFS547, goodboy emo_popo_sure

→ flag = 00401360AD46DFS547.

[CodeEngn] Basic RCE – Level 05

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

The registration key of this program is?

Kiểm tra bằng PEiD thấy file bị pack bằng UPX. Tuy nhiên không cần giải nén cũng được.

Đặt BP tại lệnh JMP huyền thoại:

Fli8EF7

F9, F8 và tin tin, chúng ta đã dừng ở OEP:

FliD164

Chuột phải > Search for > All referenced text strings để xác định diện mạo goodboy (nếu không thấy giống hình thì các bạn xem lại vấn đề analyze code nhé :-P):

Fli7DBA

Á, nó emo_popo_waaahtThôi mình thử luôn đây sexy_girl

Username: Registered User
Password: GFX-754-IER-954

Zin zin, done.

→ flag = GFX-754-IER-954.

[CodeEngn] Basic RCE – Level 04

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

This program can detect debuggers. Find out the name of the debugger detecting function the program uses.

Xét theo logic, dựa vào vị trí của bài cũng như cấp độ của toàn bộ loạt bài, ta có thể đoán được ngay đáp án. Tuy nhiên vẫn nên mở thử trong OllyDbg cho đúng chương trình giảng dạy:

Search for > All intermodular calls > sort:

codeengn basic 02

Chính là nó.

→ flag = IsDebuggerPresent.

[CodeEngn] Basic RCE – Level 03

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

What is the name of the Visual Basic function that compares two strings?

Câu này Google thì hơi khó, chúng ta search trong file .exe mà task cung cấp sẽ tốt hơn, mình cũng nhớ một chút về cái tên hàm, nhưng không chắc chắn.

Mở file 03.exe trong OllyDbg, chuột phải chọn Search for > All intermodular calls, nhấn vào tiêu đề cột Destination để sort cho dễ nhìn:

codeengn basic 02

Đúng cái này rồi :)

→ flag = __vbaStrCmp.