Shellcode实际是一段代码(也能够是填充数据),是用来发送到服务器利用特定漏洞的代码,通常能够获取权限。另外,Shellcode通常是做为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它天然就会和漏洞联想在一块儿shell
Linux中两种基本构造攻击buf的方法:
retaddr+nop+shellcode
,nop+shellcode+retaddr
,缓冲区小就就把shellcode放后边,否则就放前边。服务器
Bof攻击防护技术网络
安装execstack
dom
设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上能够执行
spa
关闭地址随机化,more /proc/sys/kernel/randomizevaspace
用来查询地址随机化是开启状态仍是关闭状态,2
表示开启,0
表示关闭。
3d
构造payload
,采用nop+shellcode+retaddr
方式(\x4\x3\x2\x1
将覆盖到堆栈上的返回地址的位置,须要将它改成shellcode的地址)
调试
新打开一个terminal,注入攻击buf
code
用attach追踪
blog
(在次步骤切记另外一个注入buf的进程不能按回车,否则./5238pwn1sc的进程不能出来)进程
此时发现0x080484ae ret 就跳到咱们覆盖的retaddr那个地方了
设置断点后,在另外一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就紧挨着这个地址,加四字节为0xffffd320
退出gdb,按照anything+retaddr+nops+shellcode
修改input_shellcode
以下
很幸运,get it~