pwn前置知識

Jexy-kynner*^發表於2024-07-30

既然是記錄學習歷程,我覺得還是從頭開始吧
我剛開始學的時候就苦於找不到學習資源,找到了又看不懂的崩潰處境
好吧,是我不會正確上網+本人又菜又擺的緣故

 一般是從比賽官方下載附件
 下載到虛擬機器 開啟terminal——checksec 檢視保護機制
 (拖進IDA/利用GDB,然後......此處省略腦子)
 編寫指令碼(用python)
 執行exp.py—>ls—>cat flag

Linux系統命令(在虛擬機器中使用)

 nc——遠端 
 ls——檢視目錄下檔案
 cat flag——獲得flag
 cd——開啟檔案
 touch 檔名——建立檔案
 vim——編輯
 chmod +x ./檔名  ~或~chmod 777 ./檔名——給檔案賦許可權
 python 指令碼名.py——執行指令碼
 rm -rf 檔名——刪除檔案

IDA使用

  • Tab鍵從C語言和彙編之間切換
  • f5從彙編到C語言
  • 單擊函式+按n——重新命名函式(或者右鍵rename)
  • Options->General->Disassembly->Line Prefixes——看地址
  • shift+f12——檢視字串,一般利用它看看有沒有後門函式,\bin\sh之類的東西

pwntools

from pown import* //呼叫pwntools
p=p.process("檔名") //本地執行
p=remote("ip",port)//打遠端
p.send()傳送訊息,訊息不存在換行符
p.sendafter("")//在讀到“”之後傳送
p.sendline()——傳送資訊後換行
p.recvline()接收並等待提示訊息
p.interactive:進入互動模式,最後寫
p.recvuntil(字串):接收並等待提示訊息
gdb.attach(p, ’b * 0xfa’):啟動gdb
p64、p32——根據設定的context選擇小端法或大端法對數字進行編碼

彙編

1

GDB除錯

  1. gdb 檔名 進入 pwndbg 動態除錯
  2. break 函式名 或 break 地址值 或 break C語言行號 設斷點
  3. run/r——執行程式 next 步過 step 步進
  4. stack 整數 檢視多少棧
  5. vmmap 顯示虛擬記憶體空間的分佈
  6. info b 檢視當前的斷點 d 刪除某一個斷點
  7. s 進入函式
  8. c (continue )讓程式繼續執行
  9. p &printf 檢視 printf 函式的真實地址
  10. x/10wx 地址 檢視該地址後 10 個記憶體單元的內容
  11. xinfo 地址 檢視該地址資訊,包括偏移等

保護機制

1
https://www.cnblogs.com/wintrysec/p/10616856.html

相關文章