Description

File: https://mercury.picoctf.net/static/37069d9462289016ea1869ef4c993912/chall.S.

Tìm kết quả trả về của file này với hai đối số: 17652275611830628817 dưới dạng một số nguyên.

Định dạng: bên trong dấu ngoặc nhọn của flag sẽ là một số hexa lowercase. Ví dụ 5614267 sẽ là 0055aabb.

Steps

  1. Đây là file hợp ngữ có kiến trúc là ARMv8.
  2. Ở trong hàm main ta thấy gọi 2 lần hàm atoi bằng instruction bl (instruction này dùng để gọi hàm và lưu kết quả trả về ở thanh ghi LR (link register), có số hiệu thanh ghi là x30). Mục đích của việc gọi hàm này có thể là để chuyển input đầu vào từ dạng chuỗi sang dạng số nguyên.
  3. Có gọi hàm func1, với hai tham số là w0w1. Hàm func1 thực hiện so sánh w1 nhỏ hơn hoặc bằngw0. Nếu đúng thì trả về w0, nếu sai thì trả về w1 (hành động trả về chỉ đơn thuần là gán giá trị cho thanh ghi w0).
  4. Như vậy, kết quả ở dạng số nguyên của file chall.S có thể sẽ là 1830628817 vì là số lớn hơn. Ta dùng lệnh '{:x}'.format(1830628817) của Python để chyển thành dạng hexa và thu được flag.

Flag

Success

picoCTF{6d1d2dd1}