Re: [問題] Netcat問題
※ 引述《luxylu ( 露西露 )》之銘言:
: 不好意思不知道該發在哪個版
: 想請教netcat的相關問題
: 最近在解一個CTF的題目
: 題目是nc xxx.xxx.xxx.xxx xxxx 之後會出現一個扔硬幣程式
: 只要連續猜對50次 就可以得到flag
: 目前我有扔硬幣的原始碼(xxx.c)跟另一個沒有副檔名的檔案(應該是shell之類)
: 我修改了xxx.c 並在我的電腦直行後 可以讓他cat flag(但我電腦沒flag)
: 我該如何利用nc 或其他的command
: 想辦法讓對方server去執行我修改過後的.c
: 或是有其它方法可以利用呢??
: 感謝各位大大給點提示
: 先謝過了
你好
剛好看到回一下
看完原始碼可以很快地發現漏洞在 printf(name) 這一行
這個漏洞叫做 format string exploit
簡單介紹一下
你可以想想看
正常 printf 的時候 stack 會長什麼樣子
printf("%x%x%x",a,b,c);
high
-------- -------------
| arg4 | | c |
-------- -------------
| arg3 | | b |
-------- -------------
| arg2 | | a |
-------- -------------
| arg1 | | "%x%x%x" |
-------- -------------
low
現在 printf 裡面沒有參數會造成什麼問題
printf(name);
假設你輸入的 name = "%x%x%x%x%x%x%x%x%x%x%x%x";
high
-------- ------------------------------
| xxxx | | local variable1(name[128]) |
-------- ------------------------------
| xxxx | | local variable2(buf[2]) |
-------- ------------------------------
| xxxx | | local variable3(seed) |
-------- ------------------------------
| xxxx | | ..... |
-------- ------------------------------
| name | | "%x%x%x%x%x%x%x%x%x%x%x%x" |
-------- ------------------------------
low
註: stack 我畫的很簡陋中間有一些 alignment 和 function call 預留的位置
要看 server 的那隻程式是怎麼編譯的
這時候 printf 會把在 stack 上的值當作參數印出來
就可以 leak 在 stack 上的值
這之中就包含 seed 的值
要是拿到 seed 的值
就可以預測出接下來 50 次的硬幣正反面
exploit 撰寫部分
可以用 pwntools 和 ctypes
pwntools 是專門用來寫 exploit 的工具
ctypes 讓你可以模擬 srand(seed) 的行為
以下是範例
from ctypes import *
cdll.LoadLibrary("libc.so.6")
libc = CDLL("libc.so.6")
libc.srand(seed)
for i in range(50):
print(libc.rand()%2)
自己動手樂趣多XD
加油!!!
seed 的位置可以用 objdump 看
或是用 gdb debug
如果還有疑問歡迎來信
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.65.210
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1465793487.A.023.html
推
06/13 13:14, , 1F
06/13 13:14, 1F
→
06/13 16:31, , 2F
06/13 16:31, 2F
推
06/13 17:37, , 3F
06/13 17:37, 3F
推
06/13 18:53, , 4F
06/13 18:53, 4F
推
06/13 18:56, , 5F
06/13 18:56, 5F
推
06/13 19:39, , 6F
06/13 19:39, 6F
推
06/13 19:55, , 7F
06/13 19:55, 7F
推
06/13 22:18, , 8F
06/13 22:18, 8F
推
06/13 23:23, , 9F
06/13 23:23, 9F
推
06/14 01:07, , 10F
06/14 01:07, 10F
※ 編輯: apple50189 (140.113.65.210), 06/14/2016 02:01:58
→
06/14 02:09, , 11F
06/14 02:09, 11F
推
06/14 17:52, , 12F
06/14 17:52, 12F
推
06/15 08:44, , 13F
06/15 08:44, 13F
推
06/15 09:35, , 14F
06/15 09:35, 14F
推
06/15 10:44, , 15F
06/15 10:44, 15F
推
06/15 10:59, , 16F
06/15 10:59, 16F
推
06/15 11:08, , 17F
06/15 11:08, 17F
推
06/15 12:54, , 18F
06/15 12:54, 18F
推
06/15 17:20, , 19F
06/15 17:20, 19F
推
06/16 04:31, , 20F
06/16 04:31, 20F
→
06/16 09:41, , 21F
06/16 09:41, 21F
→
06/16 18:16, , 22F
06/16 18:16, 22F
→
06/16 18:16, , 23F
06/16 18:16, 23F
→
06/16 18:16, , 24F
06/16 18:16, 24F
→
06/16 18:16, , 25F
06/16 18:16, 25F
→
06/16 18:16, , 26F
06/16 18:16, 26F
推
06/17 04:39, , 27F
06/17 04:39, 27F
→
06/17 15:22, , 28F
06/17 15:22, 28F
→
06/17 15:22, , 29F
06/17 15:22, 29F
→
06/17 15:22, , 30F
06/17 15:22, 30F
推
06/20 01:20, , 31F
06/20 01:20, 31F
推
06/22 00:40, , 32F
06/22 00:40, 32F
推
06/22 11:48, , 33F
06/22 11:48, 33F
討論串 (同標題文章)