Linux下shellcode注入的方法,linux shellcode技术.pdf
linux shellcode技术第9章 Linux shellcode技术中国科学技术大学曾凡平billzeng@ustc.edu.cnLinux shellcode技术• 缓冲区溢出攻击面临的3个问题:(1)返回地址在攻击串的位置;(2)返回地址的值;(3)编写shellcode 。• 编写shellcode要用到汇编语言。x86 的汇编语法常见的有AT&T 和Intel 。• Lin
linux shellcode技术
第9章 Linux shellcode技术
中国科学技术大学
曾凡平
billzeng@ustc.edu.cn
Linux shellcode技术
• 缓冲区溢出攻击面临的3个问题:
(1)返回地址在攻击串的位置;
(2)返回地址的值;
(3)编写shellcode 。
• 编写shellcode要用到汇编语言。x86 的汇编语法
常见的有AT&T 和Intel 。
• Linux 下的编译器和调试器使用的是AT&T 语法(mov
src, des)
• Win32 下的编译器和调试器使用的是Intel 语法(mov
des, src)
Linux shellcode 2
主要内容
• 9.1 Linux IA32 中的系统调用
• 9.2 编写Linux IA32的shellcode
9.2.1 编写一个能获得shell的C程序
9.2.2 用系统功能调用获得shell
9.2.3 从可执行文件中提取出shellcode
• 9.3 Linux IA32本地攻击
9.3.1 小缓冲区的本地溢出攻击
9.3.2 大缓冲区的本地溢出攻击
• 9.4 Linux IA32 远程攻击
Linux溢出攻击 3
9.1 Linux IA32 中的系统调用
• Linux系统中的每一个函数最终都是由系统调用
实现的,观察例程1 (exit.c) 的执行过程就可以验
证这一点。
• 例程1:exit.c
#include
#include
void main()
{
exit(0x 12);
}
Linux shellcode 4
编译、运行、跟踪程序
• 编辑该程序并执行:
/bin$ gcc -o e ../src/exit.c
/bin$ ./e
/bin$ echo $?
18
• 为了观察程序的内部运行过程,用gdb跟踪其执
行过程。
/bin$ gdb e
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-
2012.04
Linux shellcode 5
• (gdb) disas main
Dump of assembler code for function main:
0x080483d4 : push %ebp
0x080483d5 : mov %esp,%ebp
0x080483d7 : and $0xfffffff0,%esp
0x080483da : sub $0x 10,%esp
0x080483dd : movl $0x 12,(%esp)
0x080483e4 : call 0x8048300
End of assembler dump.
Linux shellcode 6
• exit最终会调用_e
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)