pwnable.kr-flag WP

将文件下载下来,用file命令查看一下,是一个64位可执行文件

用64位的IDA打开,发现里面的函数少的可怜,疑似加壳了

pwnable.kr-flag WP_第1张图片

放到查壳工具里看一下,发现是UPX的壳,这里用linux下的命令xxd flag | tail(xxd的作用就是将一个文件以十六进制的形式显示出来,tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容,Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入)可以发现有UPX的字样。

pwnable.kr-flag WP_第2张图片
pwnable.kr-flag WP_第3张图片

upx -d 命令进行脱壳(如果没安装upx命令的可以用sudo apt-get install upx 进行安装)

pwnable.kr-flag WP_第4张图片

这时会生一个flag的文件覆盖原文件,用file查看一下,发现和之前的信息有一些区别

并且这文件从300多KB变成了800多KB,将这个文件用IDA打开

pwnable.kr-flag WP_第5张图片

这次显得比较正常了,在main()函数F5查看一下伪代码

pwnable.kr-flag WP_第6张图片

有一段字符串,他提示会用到malloc()和strcpy,下面出现了两个函数,一个就是malloc()用于申请一块连续的指定大小的内存块区域,还有一个没有名称的函数(这里和DeeLMind视频中的有点不一样,他是直接显示的是strcpy(test, flag),至于为什么不一样我也不太清楚),既然提示里有malloc()和strcpy,malloc()已经出现了,那么那个没有名字的函数,即使不是strcpy也是和字符串复制有关的函数,在查看反汇编代码时,发现鼠标放在flag上会显示类似于flag格式的字符串,跟进去看一看,就发现了flag。最后的图是我用dgb调试时,一步一步执行时在寄存器的值中发现了可疑的字符串。
pwnable.kr-flag WP_第7张图片
pwnable.kr-flag WP_第8张图片
pwnable.kr-flag WP_第9张图片

你可能感兴趣的:(pwn学习)