-
-
[原创]2018看雪CTF第十五题WP
-
发表于: 2018-7-15 13:23 4275
-
解压题目附件压缩包。内有4个文件:
1、zImage(arm的linux内核)
2、vexpress-v2p-ca9.dtb(设备树)
3、ReadMe.txt(题目说明)
4、a9rootfs(根文件系统)
(实际上前3个文件只是提供运行环境,需要逆向的是a9rootfs)
ReadMe.txt中的内容:
为了便于用IDA调试,我没有选择说明文件中建议的Ubuntu而是Windows。
命令行输入:
弹出qemu界面:
设备要求输入key,输入错误则在此处一直循环
1、根据提示信息,用010Editor在3个binary中搜索字符串'please input your key'。对应的文件是a9rootfs。
2、尝试用IDA打开a9rootfs,IDA只能识别为2进制文件。
3、file命令识别文件格式,为ext3格式
4、用Explore2fs提取文件系统中的文件
5、在sh文件中搜索到了目的字符串'please input...',且sh为ELF格式。
sh文件运行时,系统还没初始化完成,故所使用的库均为静态链接的。(可能说的不对),没有导入表,没有符号,也没有got和plt。静态分析只能靠经验去'猜'。
比如start中:
根据对ELF的经验猜测,sub_1179c为libc_start_main,而传递给该函数的第一个参数(LDR R0,sub_11374),就是main函数。
main函数中可以看到对printf("please input your key")的循环调用:
跳出循环的关键判断:
输入的key经过t2和t3两次变换,和'C1371DA51A9030079E21DCDC5B78E38563872139C13F6F'比较,相等则成功。
t2变换中:
a1和a2算法一致(函数内部的字符串常量不同),b1、b2算法一致,且a和b互为逆运算。(很简单的字符串变换)
c将输入每字节异或并首尾互换。
abc函数均可求逆。
t3其实也是a函数。
得到Key是2018ctf0520pediy1314yyp
输进qemu,得到:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!