pwn之fd

最近小夥伴發現了一個學習pwn的網站:http://www.pwnable.kr/。然後想着一塊進行,把做過的都記

錄下來。那麼開始第一個吧!

pwn學習的遊戲網站

               

1.點一下fd圖片出現:

                 

觀察ssh [email protected] -p2222(pw:guest),是一條ssh命令。ssh是secure shell通常用於遠程鏈接Linux服務器。

我們打開終端嘗試鏈接服務器。其中fd是用戶名,pwnable.kr是域名,這裏可以替換爲ip或者別名。-p 2222即爲

端口。 guest爲密碼。

2.打開cmd終端,輸入ssh [email protected] -p 2222,並輸入密碼,登陸成功!如果使用ip登錄,可以dig pwnable.kr,

將pwnable.kr替換爲ip即可,其他不變

              

3.登錄進來即爲根目錄(/home/fd),然後ls -alh 查看下所有文件。

            

分析一下最後三個文件權限:

   權限      文件擁有者 組

-r-sr-x---   1 fd_pwn    fd     7.2K Jun 11  2014 fd
-rw-r--r--   1 root        root   418 Jun 11  2014 fd.c
-r--r-----    1 fd_pwn   root   50 Jun 11  2014 flag

-r-sr-x---  其中第一個-表示文件,r-s r-x ---分別爲用戶fp_pwn,組fd,以及其他用戶對該文件的權限。分析可知,fd即我們登陸的用戶只是對fd.c擁有可讀權限。我們對flag文件無任何權限,只能從fd.c下手。

這裏要特別提一下權限s,s權限是指在執行該文件是,獲取該文件擁有者(在這即爲fd_pwn)的所有權限。後邊要用到哦!

4.上邊分析了只能從fd.c下手,我們先查看下fd.c 輸入cat fd.c:

                         

5.分析下代碼:

atio()函數是將字符串轉換爲數字,即將我們輸入的數字處理爲一下。

read(fp,buff,num)函數是將fp所指向的文件,讀取num個字符,寫到buf中。返回值爲實際讀取的字符數。如果fp爲零,則在命令行讀取。

strcmp(a,b),比較ab大小。如果a=b,返回值爲0.

下面重點來了:

system("/bin/cat flag") 這個C文件會幫我們執行查看flag的命令。這裏最關鍵的是當程序運行的時候,fd用戶是可以獲得fd_pwn的所有權限的,而fd_pwn 擁有對flag的r權限,這不正是我們需要的嗎?

總結一下:

我們要讓運行fd,使得可以查看flag文件。 分析代碼可知,當我們輸入的參數使 fd == 0 ,然後輸入字符串LETMEWIN\n 即可。

6.終端輸入:./fd 4660  然後輸入LETMEWIN,回車:

 

7.然後將上邊的mommy。。。輸入到 flag框內,完成!!

補充:

我們可以將fd.c文件拷到我們本地,使用命令scp -P2222 [email protected]:fd.c .

 

   


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章