(Pwn)CTF工具 ROPgadget 的安装与使用介绍
一. 介 紹
使用此工具,您可以在二進制文件中搜索Gadgets,以方便您對ROP的利用。
隨著 NX 保護的開啟,以往直接向棧或者堆上直接注入代碼的方式難以繼續發揮效果。攻擊者們也提出來相應的方法來繞過保護,目前主要的是 ROP(Return Oriented Programming),其主要思想是在棧緩沖區溢出的基礎上,利用程序中已有的小片段 (gadgets) 來改變某些寄存器或者變量的值,從而控制程序的執行流程。所謂 gadgets 就是以 ret 結尾的指令序列,通過這些指令序列,我們可以修改某些地址的內容,方便控制程序的執行流程。
我們知道x86都是靠棧來傳遞參數的而x64換了它順序是rdi, rsi, rdx, rcx, r8, r9,(這里6個寄存器可以被理解為Gadgets)如果多于6個參數才會用棧我們要先知道這個特性.
有的題,里面既沒有現成的system也沒有/bin/sh字符串,也沒有提供libc.so給我們,那么我們要做的就是想辦法泄露libc地址,拿到system函數和/bin/sh字符串;
我們就需要獲取rdi, rsi, rdx, rcx, r8, r9它們的地址,首先要獲取的是rdi的地址;
這就是 ROPgadget 的作用;
二. ROPgadget工具的安裝
# 先安裝Capstone,它是一個輕量級的多平臺架構支持的反匯編架構。 sudo apt-get install python-capstone# 下載好ROPgadget解壓,并進入文件夾中 python setup.py install三.工具的使用
64位匯編傳參,當參數少于7個時, 參數從左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。 當參數為7個以上時,
前 6 個與前面一樣, 但后面的依次從 “右向左” 放入棧中,即和32位匯編一樣。
一.
命令: ROPgadget --binary 文件名 --only "pop|ret" | grep rdi
命令: ROPgadget --binary 文件名 --only "pop|ret" | grep rsi
或者
命令: ROPgadget --binary 文件名 --only "pop|ret"
二.
該工具除了可以用來查找 ret/rdi的地址,還可以用來查找一些字符串的地址
命令: ROPgadget --binary 文件名 --sting '/bin/sh'
命令: ROPgadget --binary 文件名 --sting '/sh'
命令: ROPgadget --binary 文件名 --sting 'sh'
命令: ROPgadget --binary 文件名 --sting 'cat flag'
命令: ROPgadget --binary 文件名 --sting 'cat flag.txt'
總結
以上是生活随笔為你收集整理的(Pwn)CTF工具 ROPgadget 的安装与使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xshell连接不上虚拟机的解决办法
- 下一篇: Hadoop环境搭建教学(一)运行环境,