Flare-on 2017 – IgniteMe – Challenge 2

flare-on-2017-igniteme-0

Nhận xét

  • Chương trình yêu cầu nhận flag vào để kiểm tra.
  • Cấu trúc chương trình đơn giản, chỉ có 4 hàm nhỏ để thay đổi giá trị và kiểm tra giá trị.

Phân tích

flare-on-2017-igniteme-1

Hàm main( ) đưa ra yêu cầu nhập flag vào và gọi đến các hàm sub_4010F0( )sub_401050( ) để thay đổi giá trị và kiểm tra flag

flare-on-2017-igniteme-2

Hàm sub_4010F0( ) nhận giá trị flag nhập vào.  Hàm sub_401020( ) trả vê chiều dài của flag nhập vào. Sau đó flag được lưu vào mảng ký tự byte_403078[] nếu thỏa mãn buffer[i] != 10 and != 13 and != 0. Nhận thấy với đầu vào là flag luôn thỏa mãn điều kiện trên => byte_403078[] == buffer[] 

flare-on-2017-igniteme-4

Hàm sub_41000( ) luôn trả về eax = 4 ==> v4 = 4

flare-on-2017-igniteme-3.png

Hàm sub_401050( )  thực hiện xor v4 với byte_403078[i] lưu trong byte_403180[i] rồi cập nhật liên tục giá trị v4 = byte_403070[i]. Sau đó so sánh với mảng byte_43000[], nếu đúng thì đó là flag.  

Giải pháp

Cho mảng byte_43000[i] xor v4  = flag[i], cụ thể như sau:

flare-on-2017-igniteme-5

Flag: R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com

 

 

 

Trả lời

Điền thông tin vào ô dưới đây hoặc nhấn vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s

%d người thích bài này: