环保网站建设说明书,建筑模板多少钱一张什么尺寸,企业网站建设广州,深圳商业策划公司十大公司下载压缩包#xff1a;
下载链接#xff1a;https://adworld.xctf.org.cn/challenges/list
参考文章#xff1a;攻防世界逆向高手题之secret-galaxy-300_沐一 林的博客-CSDN博客
发现这只是三个同一类型文件的三个不同版本而已#xff0c;一个windows32位exe#xff0…下载压缩包
下载链接https://adworld.xctf.org.cn/challenges/list
参考文章攻防世界逆向高手题之secret-galaxy-300_沐一 · 林的博客-CSDN博客
发现这只是三个同一类型文件的三个不同版本而已一个windows32位exe另外两个分别是32位和64位的ELF的linux可执行文件就分析32位的ELF文件吧。 扔入IDA32中查看伪代码有main函数看main函数
打开IDA发现填充和输出函数没有输入函数寻找输入函数 两个函数一个填充fill_starbase一个打印print_starbase打印的函数跟踪进去没啥打印一些横幅和其它信息其中v2跟踪不了看了一下是作为参数传入的 这里a1跟踪不了因为是在外部的starbase传入的所以前面fill_starbase猜想是填充该数组的双击跟踪 看到一个数组galaxy_name还是取地址。后面是对它的一些运算双击跟踪数组 看到这里有点不明觉厉因为至始至终没有flag字眼想起我还没运行过程序就去运行一下
运行elf文件后出现的字符串 思路题目是secret-galaxy-300中文引导型暗示——隐藏的星系运行结果显示了5个星系而我前面跟踪的数组有6个星系少了DARK SECRET GALAXY那么这个就是关键点 跟踪DARK SECRET GALAXY的调用发现一个函数代码分析如下
// 调用DARK SECRET GALAXY的函数
int __libc_csu_gala()
{int result; // eaxsc[0] off_409014; // off_409014处是DARK SECRET GALAXY字符串的地址sc[3] byte_40DAC0; // 一开始双击跟踪啥也没有后面是对它的赋值操作sc[1] 31337;sc[2] 1;byte_40DAC0 off_409004[0][8]; // off_409004处是Andromeda字符串的地址byte_40DAC1 off_409010[0][7]; // off_409010处是Triangulum字符串的地址byte_40DAC2 off_409008[0][4]; // off_409008是Messier字符串的地址byte_40DAC3 off_409004[0][6];byte_40DAC4 off_409004[0][1];byte_40DAC5 off_409008[0][2];byte_40DAC6 95;byte_40DAC7 off_409004[0][8];byte_40DAC8 off_409004[0][3];byte_40DAC9 off_40900C[0][5]; // off_40900C是Sombrero的地址byte_40DACA 95;byte_40DACB off_409004[0][8];byte_40DACC off_409004[0][3];byte_40DACD off_409004[0][4];byte_40DACE off_409010[0][6];byte_40DACF off_409010[0][4];byte_40DAD0 off_409004[0][2];byte_40DAD1 95;byte_40DAD2 off_409010[0][6];result *((unsigned __int8 *)off_409008[0] 3);byte_40DAD3 off_409008[0][3];byte_40DAD4 0;return result; // 这里犯下第三个错误返回result可是result是off_8049B80[3]就是Messier的第三个字符s我醉了难怪不显示前面一直在用 aAliensAreAroun结果这里返回别的东西去了。
}
分析完后可以知道 aAliensAreAroun数组大概就是我们要招的flag了。
第一种方法 手动调试就这样不同的字符串一个个截取对应的位拼接即可。
code:
off_409004Andromeda
off_409010Triangulum
off_409008Messier
off_40900CSombrero
flag
flagoff_409004[8]
flag off_409010[7]
flag off_409008[4]
flag off_409004[6]
flag off_409004[1]
flag off_409008[2]
flag_
flag off_409004[8]
flag off_409004[3]
flag off_40900C[5]
flag_
flag off_409004[8]
flag off_409004[3]
flag off_409004[4]
flag off_409010[6]
flag off_409010[4]
flag off_409004[2]
flag_
flag off_409010[6]
flag off_409008[3]
print(flag)
#结果aliens_are_around_us
第二种方法 IDA远程动态调试下断点在return处运行(PS:运行且调试过IDA了所以这里的数组名字和我一开始看到的不一样IDA应该是自己又修改过了) 总结这是一个脑洞题需要推理根据运行结果找到隐藏的字符串再根据隐藏的字符串找到关键代码然后计算出flag