简单易懂的 pwnable.kr 第一题[fd]Writeupt
簡單易懂的 pwnable.kr 第一題[fd]Writeupt
題目地址http://pwnable.kr/play.php
題目
題目中給出了ssh遠程登錄的地址以及登錄密碼我們先連接,輸入密碼:guest 查看一下。
輸入Linux命令: ls - la (a 將全部文件包括隱藏文件統統列出來,l 查看文件的屬性和權限等數據)。
觀察文件(包括隱藏文件),及其屬性和權限。
我們可以發現fd.c文件我們是可以讀取的,并且fd文件是可以執行的。我們先查看一下fd.c文件的源代碼:cat fd.c
在這里我簡單說明一下C語言帶參數的mian函數的三個參數:
第一個參數 argc ,用于存放命令行參數的個數。
第二個參數 argv,是個字符指針的數組,每個元素都是一個字符指針,指向一個字符串,即命令行中的每一個參數。
第三個參數 envp ,也是一個字符指針的數組,這個數組的每一個元素是指向一個環境變量的字符指針。
函數aoti的作用是將字符串轉換為整型。
所以我們只需要輸入超過兩個字符就可以通過if語句。
下面接著看,我們可以看到當buf = "LETMEWIN\n"時,就可以獲得flag。
問題的關鍵來了,我們如何使得buf = “LETMEWIN\n”。
我們知道read函數有一個性質,當第一參數為0時,則不從文件句柄中讀入,而是標準輸入,也就是我們可以直接修改buf。
要想fd等于0,我們需要一個轉換為十六進制后是0x1234的十進制的數字,通過計算我們可以得到是4660。
下面上操作:
flag 到手:
希望對大家能有所幫助,一起加油!!!
點擊查看Linux文件屬性和權限詳解
總結
以上是生活随笔為你收集整理的简单易懂的 pwnable.kr 第一题[fd]Writeupt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++——异步操作(std::futur
- 下一篇: Linux 文件属性和权限详解