XCTF 逆向 catch-me wp

##这是一个简单的wp,我将介绍我下载之后的处理过程。
下载完之后在kali上用file函数看一下文件类型:
file 文件名
也可以用python的magic库进行查看(这是我借鉴别人的思路):
在这里插入图片描述
知道是XZ comressed data之后,需要进行解压,直接在windows下把文件名后缀加上.zip就可以进行解压。
这里我出了一点小问题,我是现在win解压之后再拖到kali下面,再解压一次才得到的源码
在这里插入图片描述
然后运行它得到:
错误flag
二话不说,扔到ida进行分析:

首先先看一下这个代码:
在这里插入图片描述
这个是一个关键跳转,如果输入获取失败,haystack是一串数字,指定位置换成_dab,实际就是最后输出的bad字符串,601290保存的数值被替换成字母。

我们往前还有一段比较长的if语句,先不看它(我看不懂主要),然后前面有一个操作:
在这里插入图片描述
这里面A8~AB是一个数组,后面初始v4=0,然后haystack每一个byte都和6012A8进行异或运算。==这里有一个不理解的地方就是这个循环,为什么是一个&运算符?==我是看其他文章才知道这是一个循环8位操作。

**C 库函数 char getenv(const char name) 搜索 name 所指向的环境字符串,并返回相关的值给字符串

动态调试可以知道v3的值0xB11924E1,然后我们可以得到CTF的环境变量为:0x4ff2da0a,

ctf =  0xFEEBFEEB^0xB11924E1
print(hex(ctf))

>>0x4ff2da0a

这里面有一个问题是,为什么ASIS和CTF 的值都是0x4ff2da0a??

然后直接利用shell中的expert设置环境变量:

export ASIS="$(printf "\x0a\xda\xf2\x4f")"				
export CTF="$(printf "\x0a\xda\xf2\x4f")"

然后获得flag

https://adworld.xctf.org.cn/media/task/attachments/e058394bb53e46a7a4a0f98f035c9416

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值