IThome 2024 鐵人賽 一直刷 CTF - Day3
前言
本日進度:
Writeup
第一題:Blame Game
去翻 git log
,發現最下面有個 Author 長的一副 flag
的格式,然後試一下就對了 噎

第二題:binhexa
就用 nc
連上之後依序回答問題就可以得到 flag 了

第三題:repetitions
把載下來的東西印出來看起來就是 base64 過的東西,但解過一次之後還是亂的,看起來又是個 base64,所以就再解,因為覺得這樣太累了,所以就寫了個 python 去解,然後就得到 flag 了~
1 | import base64 |

第四題:Big Zip
解壓縮他給的檔案後,資料夾中裡面有超多的檔案,所以就用
grep
來配對 picoCTF{.*}
,然後就找到 flag
了~

第五題:First Find
使用 find
指令,找到名為 uber-secret.txt
的檔案,印出來就是 flag 了

第六題:runme.py
有點太簡單,就是直接 Run 就印出來了 /

上課紀錄
Lab 3 - cookies
發現輸入 snickerdoodle
會出現
That is cookie! Not very special though...
,並且這時去查看
cookie 會發現有一個 name
的索引為 0
,但是在一般的時候 name
是 -1
,然後如果改成
1, 2, 3...
會有不同回應,所以就寫一個程式去窮舉看看,就像下面那樣,最後就發現在
name
為 18
的時候會出現 flag

1 | import requests |

pwntools
pwn : 就是去找 Binary 檔的漏洞
基本語法
- Interaction
io = pwn.process("cmd.exe")
: 跟一個程序互動 (這裡是 cmd.exe)io = pwn.remote("host", port)
: 跟遠端主機互動io.interactive()
: 進入互動模式io
這個物件創出來之後,後面就都是用io
來與程序
或是遠端主機
互動
- Send
io.send("whoami\n")
: 送出指令io.sendline("whoami")
: 送出指令並且加上換行
- Recv
io.recv(1024, timeout=1)
: 接收回傳,第一個參數是接收的大小 (byte),第二個參數是 timeout (最多等待多久)io.recvline()
: 接收回傳並且換行io.recvuntil("end")
: 接收回傳直到遇到end
io.recvlines(2)
: 接收回傳兩行
Lab 4 - echo
就是根據遠端主機的提示,將一模一樣的文字傳回去,然後就會出現 flag,但因為主機已經關了,所以我就只有寫好程式,但應該是會對的啦 owo
1 | import pwn |
Lab 5 - eval
跟 echo 很像,但變成算 1000 道數學題,都算對之後就會給 Flag 了,然後跟上一題一樣,主機已經關了,所以我就只有寫程式,沒有實際測過
1 | import pwn |
LAB 6 – b33fer overflow
這邊聽不是很懂,有大概理解它的原理就是要把 stack 塞爆,一路塞到
return addr 的位置,這邊的題目是要跳到 win
的地方,然後就會出現
flag,但我其實不太知道實作細節,所以目前就先不寫他了,之後便更強了再說
(主要是今天死線快到了,來不及研究 lol)