00:00
大家好,从这个视频开始,就按照CF wi的顺序来讲了,然后我们首先看return to text,嗯,他这个意思就是return返回到text的段,Text段就是程序的那个程序代码段,然后我们可以打开一下这是那个程序,然后这是它的源代码,但一般如果做题的时候我们看应该是很少会给你的代码的,我们可以把它复制出来。用IDA打开它看一下,IDA是一个静态的反编译工具,然后哦,对,先简单介绍一下吧。IDA下好以后,它应该是有两个,一个ida.exxe,一个IDA 64.1XE是因为它可以,它既可以调呃看那个32位程序,也可以看64位程序,你要根据你程序的位数不同来去选择它的这个软件这个程序,然后。
01:08
要看你程序的位数的话,可以用file那里来看一下return to text,这样它就会显示你是32位的一个程序。然后这这就是IDA的那个界面。嗯,正常的话。他可能比如说你打开一个程序,它是。这样的这样的一个流程图,这样看起来会比较明白,比如说他会比如说这个地方。这种这种流程会看的比较清楚,然后你可以按一下空格来切换这样的视图模式,嗯,如如果你前面没有这种地址的话,可以在。这个地方显示返回编行内容里面的行的前缀,这个地方勾上它的就可以有前面的那个地址了,嗯。
02:05
还有一个功能是搜索字符串是shift加F12。就就打开这个字符串窗口了,其实这里是有那个。有这个选项的字符串窗口。那我们之前可以,之前我们看到它其实在程序里面是有调用这个系统B-SH这个命令的,那我们如果找的话,可以通过字符串的定位嘛,找到以后,因为它前面注意到这个地方,这个点rota它是只读的,然后你需要找到它的程序里的位置,那有两种方法,一种是直接点后面这个,它会告诉你他在什么什么地方就来到他程序里面的那个位置了,然后还有一种是在前面点个摁叉,嗯,对对,按叉,叉呢是交叉引用的意思,也就是说看在别的什么地方还用到了它,那你点过去就可以了,找到它了,对吧?那。
03:15
大家可以看到这个地方就是相当于它执行这个system命令,如果我们可以控制它直接执行这一个的话,那我们就其实就是get shell了,嗯。那我们已经找到想让他返回到的地址了,对吧,根据上一个视频讲的,那我们还是要知道它的占空间有多大,然后才能确定他要填多少数据,然后才能到他的返回地址嘛,对吧。我可以通过进去调试一下。
04:05
让它跑起来,然后往这里再介绍一个,另外一个东西,就是之前计算偏移的那个脚本,还有一种方法是这个直接用这条命令就可以了,这应该是安好安好胖兔子以后用的,我也不清楚。总之能用就行了吧,然后你输进去以后他会报错吗?对吧。那你再找它偏移的时候加上个杠参,参数杠L就可以一常在偏移得到它的占空间是112,也就是说填入112个字符以后,你再填就是返回地址了,返回地址的话,我们填成这一个,那我们就可以让他去执行这个system命令了,对吧?看一下这个EP。首先的话,要把胖错的这个库给引入,然后根据呃,因为我们是本地打嘛,没有什么没有什么网址之类的,就直接用这条命令,就是说打他嘛,然后这个地址我们换成。
05:19
找到那个,这里是16进制的形式,然后。这条命令就是发送那个配料的send嘛,发送,然后它其实是有很多种的,如果是p.send就是直接发送p.send line是发送完了以后加个回车,然后上面这一个p.send after是接收到anything以后再发送这个配料的。关于这个胖胖兔子可以找一下看学里面的一些文章。
06:00
怎么办?这个这一片可以去看一下。你说的应该比较明白,嗯。好,那我们。打一下可以看到是已经成功了啊,那如果你回过头来看一下这个程序,他看了什么的话,你会发现如果他看了暂不可执行,那对我们来说并没有什么意义,因为我们发送的那个配料的是去。让他执行他程序里面本来就有的嘛,对吧,所以他看了这个是没什么用的。
07:11
OK,我们再来看return to是要靠的,嗯,其实之前我们上课视频讲的那个例子也算是return到肖克的,然后不过那一次我们return销克是在站上的,这一次的话是不太一样,然后我们把它复制出来。用ID载入看一下。这里我们可以找到他那个main函数,然后F5看一下尾尾的呃尾为代码,然后他会看到他会输出这次没有给你system函数了,然后在接受你的输入,它会放到八二这个。
08:05
地方我们双击看一下八方二在BSS段对吧,那在这里面。首先我们可以下个断点,然后。那他执行起来以后,我们又用v m map这一个命令,可以看一下他在。BSS段它的那个权限是怎么样的,我们可以看到BSS段是。804A080这个这个地方对吧,嗯,804A这这这这一块,整个这一块。他是从这里开始,然后到这结束嘛,然后我们可以看到他的权限是读写执行什么的都都可以的。
09:07
哦,那那这样的话,我们可以。因为我们已经知道他八二的这个地址了,对吧,那我们,而且它写入以后,它会把它放到这里,那我们。只要确定它的占的那个长度,然后再返回的时候,返回到它的BSS段,就可以执行我们的销课了。我开始看一下他的偏音。嗯,等一下。报错,根据他这个报错计算一下可以得到。
10:05
嗯,现在是我们得到那个占的占的空间大小是112嘛,然后那我们现在已经知道了占的大小,然后知道我们要返回到的那个地址是多少,我就可以直接写P了。呃,这里的话可以就多介绍一点,碰兔的那个一个函数,就是这个东西,它可以生成他自己带着的那种she的,然后。这这这是那个生成的代码,然后现在删除的是他嘛,对吧?嗯。刚才那个删了吧,应该讲上面这个这是生成的,然后下面这条函数。
11:01
这个print给它关,删掉这个函数,它就是要靠的点l just这个它会填上垃圾数据,然后跟实验课的合起来,它是112个大小的,然后后面再加上我们的返回地址,返回地址就是这里。0804A0800804A080草,那这样的话就。是我们的12块的,我们可以执行一下。看一下。OK,就已经成功了,嗯,其实这个题。
12:03
这这种方法是介绍一下,可以看一下这个题,他其实是没有开那个保护的,也就是说我们用之前事例的方法也是可以成功的啊。就是说大家可以自己去试一下好吧,然后如果嗯,我应该会把这些题放到盘里吧,但下可能之前那个。嗯,VI里面好像那个链接之前我找的时候是出问题了,嗯,好就到这儿,谢谢大家。
我来说两句