Netcat問題 - Linux

Oscar avatar
By Oscar
at 2016-06-13T12:51

Table of Contents

※ 引述《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

如果還有疑問歡迎來信



--
Tags: Linux

All Comments

Elizabeth avatar
By Elizabeth
at 2016-06-15T05:11
cool
Erin avatar
By Erin
at 2016-06-15T17:38
Hardy avatar
By Hardy
at 2016-06-16T01:56
跪了
Callum avatar
By Callum
at 2016-06-18T15:17
已跪
Joseph avatar
By Joseph
at 2016-06-23T01:33
朝聖推
Rachel avatar
By Rachel
at 2016-06-24T02:41
Zenobia avatar
By Zenobia
at 2016-06-27T15:39
朝聖
Poppy avatar
By Poppy
at 2016-07-01T10:56
Linda avatar
By Linda
at 2016-07-04T10:13
朝聖
Iris avatar
By Iris
at 2016-07-06T18:21
令人雙腳癱軟。
Ophelia avatar
By Ophelia
at 2016-07-09T23:34
樓上都大師QQ
Puput avatar
By Puput
at 2016-07-11T21:39
樓上是大師
Lily avatar
By Lily
at 2016-07-13T16:29
已跪拜
Susan avatar
By Susan
at 2016-07-13T18:03
朝聖
Hedwig avatar
By Hedwig
at 2016-07-17T07:26
完全看不懂QQ
Doris avatar
By Doris
at 2016-07-21T18:56
只看得懂一半QQ
Daph Bay avatar
By Daph Bay
at 2016-07-22T16:17
拜見大大
Blanche avatar
By Blanche
at 2016-07-24T05:10
推一下好了,要不然會被發現我看不懂...
Anthony avatar
By Anthony
at 2016-07-25T00:45
朝聖推
David avatar
By David
at 2016-07-27T09:53
朝聖推,跪在地上起不來了
Rebecca avatar
By Rebecca
at 2016-08-01T07:58
我比較想知道如果對方平台的rand實做跟你不一樣怎辦...?
Odelette avatar
By Odelette
at 2016-08-03T10:05
其實我應該有可以不用知道rand實作的方法(我還沒寫cod
e驗證),只是通常CTF題目的意思會以正常邏輯想的出解
法的方向出題,像是有一定限度的測試和猜測是可以接
受的,但是要是偷偷換掉rand再叫你去猜rand的實作,
那就算不合理的了
Ula avatar
By Ula
at 2016-08-07T11:21
不知道 rand 實做的話可以試試一次開 51 個 connection XD
Yuri avatar
By Yuri
at 2016-08-08T09:04
樓上正解XD 如果GOT可寫應該可以把atoi改成system賭點
運氣輸sh看會不會爛掉(buf只有2 bytes最後沒有終止字
元)看可不可以拿shell
Hamiltion avatar
By Hamiltion
at 2016-08-12T15:27
QQ 這個ip
Hazel avatar
By Hazel
at 2016-08-16T01:02
已跪拜
Eden avatar
By Eden
at 2016-08-18T00:44
這ip 似乎在我隔壁

kernel system call open

Isla avatar
By Isla
at 2016-06-10T10:30
最近想追一下 kernel ,就從網路上常見的 chrdev driver 開始看起 知道在 init_xxx(){ register_chrdev(major, name, andamp;fops) } module_init(init_xxx) 註冊 driver 。到 regi ...

電視盒接pi

Doris avatar
By Doris
at 2016-06-10T00:02
最近突發奇想,想要自己出門在外也能看第四台的電視, 想法是透過家裡XX大寬頻之類的數位電視機上盒, 輸出端連結到樹梅派3的HDMI孔,作為影像輸入 輸出則是Pi接收到電視訊號後, 使用GStreamer RTSP Server做為網路串流輸出。 不過因為google好久都找不到類似的文章, 因此一切皆是我自行 ...

Netcat問題

Barb Cronin avatar
By Barb Cronin
at 2016-06-08T19:44
不好意思不知道該發在哪個版 想請教netcat的相關問題 最近在解一個CTF的題目 題目是nc xxx.xxx.xxx.xxx xxxx 之後會出現一個扔硬幣程式 只要連續猜對50次 就可以得到flag 目前我有扔硬幣的原始碼(xxx.c)跟另一個沒有副檔名的檔案(應該是shell之類) 我修改了xxx ...

workqueue用法差別

Anthony avatar
By Anthony
at 2016-06-07T17:35
※ [本文轉錄自 LinuxDev 看板 #1NLfKyra ] 作者: jack58 (有信心) 看板: LinuxDev 標題: [問題] workqueue用法差別 時間: Tue Jun 7 17:34:48 2016 請教各位linux kernel先進, 我對於linux kernel t ...

請問在 Ubuntu 16.04 上面該怎麼跑 wine-staging 呢?

Caitlin avatar
By Caitlin
at 2016-06-07T17:29
已經加了 PPA 並且安裝完畢,卻看不到指令 請問這該要怎麼使用呢? 已加入 ppa:wine/wine-builds 並安裝 wine-staging - ...