Python套件 – CTF解題神器 – pwntools

pwntools 是一個用Python開發的CTF框架和漏洞利用的開發程式庫。

英文教學文件在 docs.pwntools.com

安裝方式

Linux

sudo apt-get install python-pip
sudo pip install pwntools

Windows

pip install pwntools

一般都使用

from pwn import *

但請注意一般開發python程式是最忌諱這樣寫的,理論上應該只載入需要的方法而已。

它有很多模組,但這邊這題CTF演練只需要tubes,其他先列出來但不多做說明啦!

asm:彙編與反彙編
dynelf:用於遠程符號泄露,需要提供leak方法
elf:對elf文件進行操作
gdb:配合gdb進行調試
memleak:用於內存泄漏
shellcraft: shellcode的生成器
tubes:包括tubes: 包括tubes.sock, tubes.process, tubes.ssh, tubes.serialtube,分別適用於不同場景的PIPE
utils:一些實用的小功能,例如CRC計算,cyclic pattern等

Tubes

與伺服器或目標PC建立連線並進行互動。

remote("hostname",port_num)

向目標主機以及指定port連線。

recvline() 其實等於 readline() 就是讀一行的意思。

sendline() 送一行訊息

sendlineafter(“xxxx”, “送的訊息”) 就是在前面那個參數之後再發送訊息。

其他

基本IO

您可能需要從IO中獲得的基本功能是:
接收資料
recv(n) -接收任意數量的可用字節
recvline() -接收數據,直到遇到換行符
recvuntil(delim) -接收數據,直到找到定界符
recvregex(pattern) -接收數據,直到滿足正則表達式模式
recvrepeat(timeout) -繼續接收數據,直到發生超時
clean() -丟棄所有緩衝的數據

傳送資料
send(data) -發送數據
sendline(line) -發送數據和​​換行符

整數運算
pack(int) -發送字大小的壓縮整數
unpack() -接收和解包一個字長的整數

實際演練

Easy Peasy

 | 40 pointsTags: Category: Cryptography

AUTHOR: MADSTACKS

Description

A one-time pad is unbreakable, but can you manage to recover the flag? (Wrap with picoCTF{}) nc mercury.picoctf.net 64260 otp.py

關鍵

 if stop >= KEY_LEN:
        stop = stop % KEY_LEN

基於HMAC的一次性密碼演算法(英語:HMAC-based One-time Password algorithm,HOTP)是一種基於雜湊訊息驗證碼(HMAC)的一次性密碼(OTP)演算法,同時也是開放驗證提案的基礎(OATH)。 取自維基百科

這裡做了 xor

nc過去會看到加密後的flag

觀察opt.py可以發現密鑰的長度是50000個byte,flag是32byte。

仔細思考只要超過50000,它就會循環了。

簡單來說要找加密的xor value 只要不斷的使用相同的xor重新加密原來的輸入就可以拿到flag。

雖然這題code不是自己寫,但理解別人寫的code並吸收才是最重要的,所以就放上code的連結在這裡。

https://blog.maple3142.net/2021/03/30/picoctf-2021-writeups/

最後取得flag

Back To Top
error: 內容被保護 !!