LJP Reverse1 list Writeup
list
先來 main 逛逛吧~
看到題目給我們的提示:
“TODO: Xor node->value1 and node->value2”
所以這題的目標應該是找到 node 的 value1 和 value2 兩者 xor,應該就結束了。
我們可以看到 main call 了一個 function 叫 sub_1168+1,這通常應該是因為 IDA 解爛了,我們來重新定義一下他。
先對 sub_1168 按 u 取消定義。
按完應該會長這樣,再來我們對 sub_1169 按 p 定義為函式。
完成,那我們來看看 sub_1169 裡面在做些什麼,看一下反編譯。
首先我們看到他 malloc 了兩個空間,那就先來定義兩個 structs,分別是 0x18 和 0x10 的大小。
再來稍微整理一下 sub_1169 的邏輯,變成下面這樣:
有逆出邏輯基本上就簡單了,可以看到他把 array1 xor 0x5A 存到 value1,然後把 array2 xor 0xA5 存到 value2 裡,再根據題目的提示,我們把 value1 和 value2 xor,就可以拿到 flag 了,寫一個 exploit 來幫我們完成這些計算:
1 | # Given two arrays of hexadecimal values, we will perform the following operations: |
最後執行可以得到:FLAG{...}
- Title: LJP Reverse1 list Writeup
- Author: kazma
- Created at : 2023-12-09 00:37:00
- Updated at : 2023-12-10 14:22:11
- Link: https://kazma.tw/2023/12/09/LJP-Reverse1-list-Writeup/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments