[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:
[asm]00401099 |. E8 B5000000 call ; GetVolumeInformationA
0040109E |. 68 F3234000 push 07.004023F3 ; /StringToAdd = “4562-ABEX”
004010A3 |. 68 5C224000 push 07.0040225C ; |ConcatString = “”
004010A8 |. E8 94000000 call ; lstrcatA
004010AD |. B2 02 mov dl,2
004010AF |> 8305 5C224000 01 /add dword ptr ds:[40225C],1
004010B6 |. 8305 5D224000 01 |add dword ptr ds:[40225D],1
004010BD |. 8305 5E224000 01 |add dword ptr ds:[40225E],1
004010C4 |. 8305 5F224000 01 |add dword ptr ds:[40225F],1
004010CB |. FECA |dec dl
004010CD |.^ 75 E0 jnz short 07.004010AF
004010CF |. 68 FD234000 push 07.004023FD ; /StringToAdd = “L2C-5781”
004010D4 |. 68 00204000 push 07.00402000 ; |ConcatString = “”
004010D9 |. E8 63000000 call ; lstrcatA
004010DE |. 68 5C224000 push 07.0040225C ; /StringToAdd = “”
004010E3 |. 68 00204000 push 07.00402000 ; |ConcatString = “”
004010E8 |. E8 54000000 call ; lstrcatA
004010ED |. 68 24234000 push 07.00402324 ; /String2 = “”
004010F2 |. 68 00204000 push 07.00402000 ; |String1 = “”
004010F7 |. E8 51000000 call ; lstrcmpiA
004010FC |. 83F8 00 cmp eax,0
004010FF |. 74 16 je short <07.___goodboy> ; goodboy[/asm]
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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *