【NSSCTF逆向】【2023题目】《enbase64》《ez_XOR》《easy_asm》
题目enbase64
解法
这道题也是前几天Litctf中的一道题,也给我卡了好一会。现在我们来重新做做。
先查壳
ok无壳放进ida里面看看
进去就是主函数
check函数点进去
很明显这里就是最后判断的地方。
是我们输入的字符串在一定的处理之后变成另外一个字符串与GQTZlSqQXZ/ghxxwhju3hbuZ4wufWjujWrhYe7Rce7ju相比较。
那我们看看我们输入的字符串做了些啥处理吧。
这个base64应该是比较重要的,点进去看看吧
进来后先注意到这三个都是指针参数,那具体传了些啥东西进来呢?
- source是"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"这个字符串
- str是我们输入的
- str1是最后出来的一个字符串
ok有了这些信息我们继续分析
这里有个很明显的base加密过程
1.我们输入的字符是以8位二进制数,三个字符就是24位,base64即以6位为一组然后缺的补0。(其实做的时候还不太会base64甚至都是一个个字符还原的哈哈哈)
但和一般的base64加密不太一样的事,它是拿我们输入的进行base64后去查表,然后拼成一个新的字符串。
有了这些信息我们继续往上看
这个函数basechange,跟进查看
原来是对原来的"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"进行换表了。那我们的source就不在于是abcd。。
而是换表后的东西了。
所以逆向思路也有了。
先找到换完之后的表,然后根据GQTZlSqQXZ/ghxxwhju3hbuZ4wufWjujWrhYe7Rce7ju查看每个字符在表中的位置,然后再base64解密,就可以得到应该输入的字符串了。理论结束开始实践。
首先是找表啊,我不太想自己一个个输入了,就直接动态调试看一下了。
找到这个函数结束的位置4016E5,在这个地方下断点。
然后放进odg里面调试。注意这里面要我们输入字符串,我们必须输入33位的,要不然进入不了这个base64函数(当然可以在if上做点手脚)。
可以看到在这里我们找到了我要的表。
http://web.chacuo.net/netbasex
ok出现flag。
其实刚开始在做题的时候,base64不会,我就按照我的思路找到了每个字符在表中相对应的位置,以至于做的时候是把位置全换成二进制数
然后高位补零4个为一组,找三个字符一个个还原的。哈哈哈有些麻烦了。
2.补一个知识点吧,虽然不应该用到,但是记一下没问题。py中可以用bin()直接输出二进制数
题目ez_XOR
解法
无壳放ida
逻辑还是很清晰的,我们输入的字符串进行处理后与str2进行比较,str2是明文被复制的。
那比较关键的对我们的str1干了什么了
就是它函数XOR 还有一个参数是3
也很简单啊上面依托不用看,是判断循环次数的。主要在于红框的处理。就是直接和9异或。
逆向思路:str2字符串自己与9异或
有了
题目easy_asm
解法
这道题是把我苦了很久的一道题,打也打不开(是msdos文件)。没办法直接扔进ida
代码看上去是很轻松,但是不让f5,只能自己慢慢分析了。
这串代码是关键,把al当中的内容和
所以我看别人的wp将这里其实就是判断到没到
但是我看上面的东西我又不明白了,xor的结果不是应该存在al当中吗?
那后面的cmp中的al已经是被操作过的了,怎么会是输入的字符串呢?
输入后的字符串应该经过和0x10异或过了,应该是异或过的字符串,不应该啊。有明白的师傅可以评论指点一下。
。
。
那既然wp都这么讲,只能硬着头皮写了吧。
其实刚开始还有一个不明白,就是al到底是怎么存的。
直到看见这里的buffer
实际上也是关系到键盘输入的。
。
。
那我们继续往下看,wp讲下面已经有密文了。
我往下看
wp有讲equal!前面的都是判断而已,不是密文,我也不大明白,只能硬着头皮看下去。
也就是说X。。后面的东西才是密文,把他经过^0x10。就是我们的flag。
贴上别的师傅的脚本
NSSCTF{Just_a_e3sy_aSm}
3.总结一些知识吧,虽然这题没明白但还是学到了关于汇编的一些东西。。lodsb把si指向内容的数据给到al,然后根据df(方向)为决定增减si。。stosb把al的内容给di指向的地方,然后根据df增减di。。。xor把结果存在目标数,也就是前一个上面。。。。jnz当zf为0跳转也就是不相等时跳转。。。lea把后面的那个地址给前面的寄存器
总结
太菜了太菜了 最后那题明天再看看。
enbase64 base64查表换表
ez_XOR XOR
easy_asm asm 汇编
本文作者:Corax0o0
本文链接:https://www.cnblogs.com/Corax0o0/p/17432753.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步