---
# System prepended metadata

title: HW 0x00 Write Up
tags: [Course, CS, NCTU, SecureProgramming]

---

###### tags: `NCTU` `CS` `Course` `SecureProgramming`

HW 0x00 Write Up
==
  
yysung

## Buffer Overflow

flag: FLAG{B0fs_4re_th3_Bas1cs}

使用
```
objdump -D bof-485e09d5c2b2d4841afd4302c74e5c09
```
可以得知程式的行為是用 gets 讀取 stdin 並放入 16 bytes 的空間中，
因為讀取沒有檢查輸入長度，所以可以輸入超過長度的字串修改 return address
讓程式執行到 hidden 函式。

輸入值為 16 * 'A' (填滿 16 bytes char array 的空間) + 8 * 'A' (填滿 stack 的 rbp) + 0x0000000000400566 (hidden 的位址，覆蓋在 return address)

成功執行 hidden 函式後可以拿到 shell
```
cd ../
cat flag
```
就可以拿到 flag

## Pusheeeeen

flag: FLAG{GGININDERLA}

原連結是:http://kaibro.tw/hw0/hw0.php
點進去後會跳轉到:http://kaibro.tw/hw0/hw0-0.php
觀察瀏覽器行為後發現:
http://kaibro.tw/hw0/hw0.php 跳轉到
http://kaibro.tw/hw0/kaibro_big_gg.php 跳轉到
http://kaibro.tw/hw0/hw0-0.php

中間的 kaibro_big_gg.php 的 Content-Length 特別大，
因為瀏覽器不會顯示跳轉頁面的內容，
所以使用 curl 顯示
```
curl http://kaibro.tw/hw0/kaibro_big_gg.php
```
## MdRsRcXt

flag: flag{how2decrypt}

輸入的字串會經過
個別字元 md5 -> rsa 加密 -> rc4 加密 -> xtea 加密
得到 A
所以只要倒過來順序解密和查看 md5 就可以得到 flag

## babystego

flag: flag{talkative_image}

使用 stegsolve 打開圖片後，發現 Blue plane 0 的資料不太像是原本圖片的資料，
將該層資料取出後用 file 指令查看後發現是 MPEG 格式，使用音樂播放器可以打開檔案
聽起來像是人聲倒播，將音訊倒播後可以聽到數字和英文
兩個兩個一組看就會發現是 ASCII code，也就是 flag

stegsolve: https://github.com/zardus/ctf-tools/tree/master/stegsolve


## notbabyjava

flag: flag{baby_java_anti_rev}

使用 jad 對題目檔案進行解碼就能得知原始碼，
照著原本 xor 的值，再做一次 xor 就可以得到 flag

jad: http://www.javadecompilers.com/jad