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获得systemexit地址
  • 编译

  • gdb,得到system和exit的地址

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

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

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

20145318《网络对抗》注入shellcode及Return-to-libc的更多相关文章

  1. 20145307陈俊达《网络对抗》shellcode注入&return to libc

    20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...

  2. 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入

    20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...

  3. 20145210姚思羽《网络对抗》——shellcode注入& Return-to-libc攻击深入

    20145210姚思羽<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服务器 ...

  4. 20145215《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...

  5. 20145227鄢曼君《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145227鄢曼君<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode注入实践 shellcode基础知识 Shellcode实际是一段 ...

  6. 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...

  7. 20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...

  8. 20145326蔡馨熠《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145326蔡馨熠<网络对抗>shellcode注入&Return-to-libc攻击深入 准备一段shellcode 首先我们应该知道,到底什么是shellcode.经过上网 ...

  9. 20145301《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...

  10. 20145303 刘俊谦《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145303 刘俊谦<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode实际是一段代码,但却作为数据发送给受攻击 ...

随机推荐

  1. SAPI

    https://en.wikipedia.org/wiki/Server_Application_Programming_Interface In computing, Server Applicat ...

  2. 洛谷P3966 单词 [TJOI2013] AC自动机

    正解:AC自动机 解题报告: 传送门! 先来提供一个40pts错解QAQ 首先看到这题就会想到AC自动机板子题2鸭!然后就照着那题的套路打一下,随便改一点儿,简单来说就是每次经过一个节点都要++,然后 ...

  3. H5,PC网页屏幕尺寸相关整理(scrollLeft,scrollWidth,clientWidth,offsetWidth)

    HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距离之完全详解scrollHeight: 获取对象的滚动高度. scrollLef ...

  4. TcMalloc的介绍以及Windows下安装使用

    本文由博主(SunboyL)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/Introduction_TcMalloc.html 介绍: TcMalloc(Threa ...

  5. Ajax返回乱码

    1.关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码,contentType的charset是指服务器发送给客户端时的 ...

  6. Win10系统 Eclipse 下'Publishing to Tomcat'has encountered a problem解决办法

    首先贴出来错误: 详情为:Publishing failedCould not publish to the server.There were issues during deployment to ...

  7. MyEclipse10.0 注册破解步骤

    MyEclipse 10.0破解 激活(java编写,适用于装有java环境的各种操作系统,Windows,Linux,MacOS) =====[方法一]=====[第一步]:输入任意用户名[第二步] ...

  8. Goroutines vs Threads

    http://tleyden.github.io/blog/2014/10/30/goroutines-vs-threads/ Here are some of the advantages of G ...

  9. VMware coding Challenge: Coin Toss Betting

    static int CoinTossEndAmount(int betAmount, String coinTossResults) { if (betAmount <=0 || coinTo ...

  10. Lintcode: Insert Node in a Binary Search Tree

    Given a binary search tree and a new tree node, insert the node into the tree. You should keep the t ...