首页 技术 正文
技术 2022年11月6日
0 收藏 791 点赞 342 浏览 1099 个字

20145318《网络对抗》注入shellcode及Return-to-libc

注入shellcode

知识点

  • 注入shellcodeShellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。漏洞利用中最关键的是Shellcode的编写。

实践过程

  • 写一段shellcode,保存为20145318shellcode.c
  • 20145318《网络对抗》注入shellcode及Return-to-libc

  • 安装execstack

20145318《网络对抗》注入shellcode及Return-to-libc

  • 设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行

20145318《网络对抗》注入shellcode及Return-to-libc

  • 关闭地址随机化

20145318《网络对抗》注入shellcode及Return-to-libc

  • 用more /proc/sys/kernel/randomize_va_space来查询地址随机化是开启状态还是关闭状态,`2`表示开启,`0`表示关闭。
  • 采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

20145318《网络对抗》注入shellcode及Return-to-libc

  • 注入攻击buf

20145318《网络对抗》注入shellcode及Return-to-libc

  • 再打开一个终端,用GDB调试5318pwn进程,找到进程号2906

20145318《网络对抗》注入shellcode及Return-to-libc

  • 启动gdb调试进程,设置断点,查看注入buf的内存地址

20145318《网络对抗》注入shellcode及Return-to-libc

  • 设置断点后,在另一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置,shellcode就紧挨着这个地址,加四字节为其地址

20145318《网络对抗》注入shellcode及Return-to-libc

  • 退出gdb,按anything+retaddr+nops+shellcode修改input_shellcode如下

20145318《网络对抗》注入shellcode及Return-to-libc

  • 成功

20145318《网络对抗》注入shellcode及Return-to-libc

Return-to-libc攻击

  • sudo apt-get update

20145318《网络对抗》注入shellcode及Return-to-libc

  • sudo apt-get install lib32z1 libc6-dev-i386

20145318《网络对抗》注入shellcode及Return-to-libc

  • 进入32位linux环境,并使用bash

20145318《网络对抗》注入shellcode及Return-to-libc

  • 关闭地址空间随机化

20145318《网络对抗》注入shellcode及Return-to-libc

  • 使用另一个shell程序(zsh)代替/bin/bash,设置zsh程序

20145318《网络对抗》注入shellcode及Return-to-libc

  • 在编译时手动设置栈不可执
  • 编写retlib.c

20145318《网络对抗》注入shellcode及Return-to-libc

  • 编译程序,并设置SET-UID

20145318《网络对抗》注入shellcode及Return-to-libc

  • 需要用到一个读取环境变量的程序:getenvaddr.c

20145318《网络对抗》注入shellcode及Return-to-libc

  • 编译

20145318《网络对抗》注入shellcode及Return-to-libc

  • 编写exploit.c

20145318《网络对抗》注入shellcode及Return-to-libc

  • 用刚才的getenvaddr程序获得BIN_SH地址

20145318《网络对抗》注入shellcode及Return-to-libc

  • gdb获得systemexit地址
  • 编译

20145318《网络对抗》注入shellcode及Return-to-libc

  • gdb,得到system和exit的地址

20145318《网络对抗》注入shellcode及Return-to-libc

  • 修改exploit.c文件,填上刚才找到的内存地址

20145318《网络对抗》注入shellcode及Return-to-libc

  • 删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的exploit.c

20145318《网络对抗》注入shellcode及Return-to-libc

  • 先运行攻击程序exploit,生成了badfile文件,再运行漏洞程序retlib,可见攻击成功,获得了root权限

20145318《网络对抗》注入shellcode及Return-to-libc

20145318《网络对抗》注入shellcode及Return-to-libc

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,951
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,477
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,290
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,107
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,739
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,773