刚刚终于把这道题给干了,作为re新人的我,自然是来进行一个的记录。
先拿到文件,想都不用想就丢进exeinfope来看一下是32还是64的。
很显然,这个是linux下的ELF文件,而且是64位的;
然后丢进ida里面看看。
在我苦苦地看了几个小时后,准确地发现最后一个sub_4006CB()函数是flag所在地;进去一看,好家伙,里面根本没输出,就一大串循环
再仔细看看,不难发现v7[]这个数组很明显是flag了;
那么就使用linux远程动态调试的方法去做,毕竟运行完就得到结果(v7[]);
启动虚拟机,在终端使用ip addr show指令,很轻松得到虚拟机的ip地址(涂红处):
提前把ida的dbgsrv文件夹的的linux_server和linux_server64导进linux系统里面,
用./linux_server(64)指令打开(是否加64取决于你的文件)
再回到ida里,选择linux的debugger
在项目设置里面设置文件位置,hostname就是刚刚查到的ip地址,端口就用默认端口,directory那个是文件的输出位置,一般选在同文件夹即可。
然后设置断点,在return处,刚刚好v7能跑完
运行; 找到v7[]
双击就能查看了;