20145318《网络对抗》注入shellcode及Return-to-libc
20145318《网络对抗》注入shellcode及Return-to-libc
注入shellcode
知识点
- 注入shellcodeShellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。漏洞利用中最关键的是Shellcode的编写。
实践过程
- 写一段shellcode,保存为20145318shellcode.c
安装execstack
- 设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行
- 关闭地址随机化
- 用more /proc/sys/kernel/randomize_va_space来查询地址随机化是开启状态还是关闭状态,`2`表示开启,`0`表示关闭。
- 采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)
- 注入攻击buf
- 再打开一个终端,用GDB调试5318pwn进程,找到进程号2906
- 启动gdb调试进程,设置断点,查看注入buf的内存地址
- 设置断点后,在另一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置,shellcode就紧挨着这个地址,加四字节为其地址
- 退出gdb,按anything+retaddr+nops+shellcode修改input_shellcode如下
- 成功
Return-to-libc攻击
sudo apt-get update
- sudo apt-get install lib32z1 libc6-dev-i386
- 进入32位linux环境,并使用bash
- 关闭地址空间随机化
- 使用另一个shell程序(zsh)代替/bin/bash,设置zsh程序
- 在编译时手动设置栈不可执
- 编写retlib.c
- 编译程序,并设置
SET-UID
- 需要用到一个读取环境变量的程序:
getenvaddr.c
- 编译
- 编写
exploit.c
- 用刚才的
getenvaddr
程序获得BIN_SH
地址
gdb
获得system
和exit
地址- 编译
- gdb,得到
system和
exit的
地址
- 修改
exploit.c
文件,填上刚才找到的内存地址
- 删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的
exploit.c
- 先运行攻击程序exploit,生成了badfile文件,再运行漏洞程序retlib,可见攻击成功,获得了root权限
20145318《网络对抗》注入shellcode及Return-to-libc的更多相关文章
- 20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...
- 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入
20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...
- 20145210姚思羽《网络对抗》——shellcode注入& Return-to-libc攻击深入
20145210姚思羽<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服务器 ...
- 20145215《网络对抗》shellcode注入&Return-to-libc攻击深入
20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...
- 20145227鄢曼君《网络对抗》shellcode注入&Return-to-libc攻击深入
20145227鄢曼君<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode注入实践 shellcode基础知识 Shellcode实际是一段 ...
- 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入
20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...
- 20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入
20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...
- 20145326蔡馨熠《网络对抗》shellcode注入&Return-to-libc攻击深入
20145326蔡馨熠<网络对抗>shellcode注入&Return-to-libc攻击深入 准备一段shellcode 首先我们应该知道,到底什么是shellcode.经过上网 ...
- 20145301《网络对抗》shellcode注入&Return-to-libc攻击深入
20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...
- 20145303 刘俊谦《网络对抗》shellcode注入&Return-to-libc攻击深入
20145303 刘俊谦<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode实际是一段代码,但却作为数据发送给受攻击 ...
随机推荐
- Gym - 101628F Find the Inn dijkstra,读边时计算新权值
题意: 给n个点m条边及每条边所花费的时间,经过给定的p个点时会停留k秒,要求在t秒内从1号点走到n号点,若可以走到输出最短时间,若不行输出-1.. 题解:读取边时,将每个点停留的时间加到以其为终点的 ...
- YARN架构设计详解
一.YARN基本服务组件 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager ...
- 图论——topsort
今天学习topsort,明天强联通分量.topsort是一种在DAG(有向无环图)中来制定顺序的方法,从入度为0开始一个一个编排顺序直至所有的边都有了顺序(或者形成了环)最后如果图中还剩下元素那一定是 ...
- python requests模块的两个方法content和text
requests模块下有两个获取内容的方法,很奇怪,都是获取请求后内容的方法,有什么区别呢?? 一.区别 content:返回bytes类型的数据也就是二进制数据 text:返回的就是纯文本(Unic ...
- 2018/04/07 每日一个Linux命令 之 logrotate
简介 日志的存在一直是 Linux 里面一个比较重要内容. 但是随着服务器运行的时间越来越长,日志越来越大.我见过一个线上项目 TP3.2 log文件有260+G的...... logrotate 也 ...
- 小希的迷宫---hdu1272
http://acm.hdu.edu.cn/showproblem.php?pid=1272 #include<stdio.h> #include<string.h> #inc ...
- 洛谷P4147 玉蟾宫 单调栈/悬线法
正解:单调栈/悬线法 解题报告: ummm这题我当初做的时候一点思路也没有只会暴力出奇迹:D(啊听说暴力好像能水过去呢,,, 然后当初是看的题解,然后学了下悬线法 然后就忘了:D 然后我现在看发现看不 ...
- ViewPager的OnPageChangeListener三个回调解析
一个native crash最后是重写ViewPager解决的,过程中发现这三个回调还有点绕,于是理了一下 ViewPager有两个操作,一个是用手指滑动翻页,一个是直接setCurrentItem( ...
- dedecms建的网站如何去掉/index.html
DEDECMS建立的网站,www.abc.com/index.html和www.abc.com两个都可以访问,而且两个页面都是一样的,这样就会造成重复页面,对搜索引擎不友好,那么怎么去掉index.h ...
- [dt]世纪历史长河年代表
年代口诀 夏商与西周, 东周分两段, 春秋和战国, 一统秦两汉, 三分魏蜀吴, 二晋前后延, 南北朝并列, 隋唐五代传, 宋元明清后, 皇朝至此完. 中国历史长河年代表 参考: 中国历史朝代顺序表.年 ...