# SWSEC HW0 Writeup ###### tags: `swsec` `writeup` ## Easy C2 decompile 後發現 decode_flag function 可 gdb 掛上去後 call `print decode_flag(buf, encoded_flag)` 另外他會連線 socket 故可在本機直接 `nc -nvlp port` 來聽 port 以取得 flag ## GUSP Hub 使用 flask 寫 api XSS 無特別限制 故可直接 fetch /flag 因 CORS policy 因此使用 location.src 來打回 flag ## Baby Crackme sub_ 為 compare flag 的 function 跟進去後可以發現其會先還原 flag 後再 call strcmp 因此我們可以將斷點下在 strcmp 的 function call 直接用 gdb 讀取 memory ## Baby Hook 提供的程式中僅呼叫兩個 function 但會透過使用者提供的 shared object 並以 LD_PRELOAD 方式載入後執行 透過 LD_PRELOAD shared object 我們可以 overwrite function overwrite 掉 sleep 來讀 flag 並列印出來 不 overwrite printf 也避免程式被 sleep 卡住 ## Extreme Xorrrrr 所提供之 list 皆為其原本的值與其他所有原始值進行 XOR 有偶數個 element -> 可先全部 XOR 起來以取得所有原始值進行 XOR 最後消掉剩該 index 之原始值 得到數個不同 n 底下的模數後 可透過中國餘式定理將 x 求出 將 long 轉為 byte 即為 flag