这应该是我做的第一道pwn的题了(虽然也是看了很多别人的WriteUp),想了两天,才终于弄清楚了,在这里记录一下。
拿到手以后发现是一个ELF文件,就放进kali虚拟机里面运行一下先:
程序启动以后打印一段话,然后让你输入,就完事了。
再放入IDA中,观察:
检测栈有点问题,不能够F5,强行看汇编。。。
5个push是打印出来的那句话,
Let’s start the CTF:
下面一句 mov ecx,esp 就是把这句话的地址传给ecx,
mov dl,14h #就是传了0x14这个数给dl,IDA后面注释了是len,也就是上面那句话的长度
mov bl,1 #传了1这个值给bl,注释是fd,查了资料以后才知道就是文件句柄,0(标准输入)、 1(标准输出)和2(标准错误),所以1 的意思是标准输出,也就是输出到终端上。
mov al,4 #传了4给al,就是代表执行什么样的操作,4是写操作。
int 80h #就是执行,感觉相当于call了。
下面就是写函数了,和上面的类似:
dl=3Ch,所以长度等于20
bl=0, #xor ebx,ebx,就是清零ebx的值,代表标准输入。
al=3, 读操作。
整个程序就这么短,下面在gdb-peda中调试一下,(peda在我以前的一篇博客中有讲怎么安装)