# TAMUCTF WRITEUP
## 1. Reveille Petter
* Ta được 1 file game `reveille-petet.exe`, Nếu quăng vào IDA phân tích file này thì sẽ rất lớn và không khả thi.
* Ở đây ta có 2 cách 1 là ta có thể dùng `cheat engineer` để buff score và lấy flag còn 2 là strings để lấy code bên trong file .exe, Vì mình đã từng làm một bài tương tự trên `Rootme` nên sẽ quyết định thử cách 2 xem sao

* Ta thấy biến var_encrypted gán strings bằng `hfdlzs2w^0r^btu2 |`, mình sẽ quăng lên `Cyberchef` để brute xor

* Ta được flag ở key 1 `igem{r3v_1s_cut3!!}`
## 2. Resistant
* Ta được 1 file ELF, chạy thử bên máy ảo thì ta thấy chương trình yêu cầu user nhập pass và check như các chall khác

* Load vào IDA để check main ta thấy đơn giản như sau

* Ta thấy hàm `check debug` ngay đầu mình sẽ đặt breakpoint để debug bypass hàm này
* Ở bên dưới có thêm hàm decrypt_func và auth_len khá đáng nghi và ta không thấy được chương trình call các hàm get string, hàm decrypt_func thực hiện một vòng lặp qua từng byte trong vùng nhớ được truyền vào. Mỗi byte được thực hiện phép XOR với một byte từ func_key (được trỏ đến bởi &func_key + (i & 0xF)) để giải mã dữ liệu.
* Mình sẽ debug thử

* Ta sẽ setIP để bypass hàm `check_debug` ở đây, ta cũng thấy sau khi check_debug chương trình sẽ decrypt password và call hàm `auth()`, từ việc ta không thấy hàm dùng để scan chuỗi input giống như lức chạy chương trình thì có lẽ lệnh đã được wrap trong hàm `auth()` này mình sẽ f7 vào hàm để check

* Đúng như mình nghĩ, nó gen ra hàm nhận input của chứng ta
* hàm này sẽ nhận input và cmp với một const nếu đúng sau đó sẽ mở file flag.txt để đọc flag mình sẽ đặt breakpoint để lấy const ra

* Const string là `N0tUrM0msP4sswd!`, ta đã lấy được const sau đó sẽ dùng để nhập lên server ssl mà đề cho để get flag
> gigem{a_b4ttl3_4_th3_hist0ry_b00ks}