0
点赞
收藏
分享

微信扫一扫

中职网络安全比赛逆向入门教程(3)//xor亦或


开始

将题目拖入ida分析

中职网络安全比赛逆向入门教程(3)//xor亦或_安全


中职网络安全比赛逆向入门教程(3)//xor亦或_十六进制_02


看ida的汇编代码和代码块就能知道,这是一个关于xor亦或的逆向题

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_03


这里一直在for循环,这个代码块一直在对flag的字符串亦或,亦或的值是1

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_04


这里可以看到,程序将亦或后的值与我们输入的值做对比,然后正确的话就输出

Congratulations!

错误的话则输出

Bad flag((( Try again

之后无论是输入正确和错误,都去向了同一个代码块,然后退出程序,由此可知,这个亦或后的值就是flag

我们可以看看ida的伪代码,按下f5

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_05


和我之前分析的一样,我们只需要找到flag的值,然后亦或就好了

中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_06


双击这个被亦或的flag地址,我们跳转到了程序的data段

中职网络安全比赛逆向入门教程(3)//xor亦或_十六进制_07


这些值就是亦或之前的flag值,开头是6A63,结尾是4255,这里不方便复制出来,我们用010 Editor打开程序

中职网络安全比赛逆向入门教程(3)//xor亦或_经验分享_08


中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_09


ctrl+f搜索开头的十六进制6A63

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_10


我们在ida里看到,结尾的十六进制是4255

中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_11


所以flag亦或之前的值就是这些,我们ctrl+shift+c复制出来

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_12


为了写脚本方便一点,我们ctrl+H替换一下字符串

中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_13


然后将这些值保存一下,新建一个py文本写一个简单的小脚本来还原flag

中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_14


然后右击exp.py,选择用文本方式打开,也可以使用notepad++,还可以拖到linux里双击直接打开,反正我们只需要打开,然后在里面写点代码

中职网络安全比赛逆向入门教程(3)//xor亦或_字符串_15


首先我们将flag放进去

中职网络安全比赛逆向入门教程(3)//xor亦或_逆向_16


由于我们输出时,需要将字符存在一个变量里,我们在这里创建一个亦或后的flag变量,设置为空

中职网络安全比赛逆向入门教程(3)//xor亦或_经验分享_17


然后我们写一个循环来亦或flag

中职网络安全比赛逆向入门教程(3)//xor亦或_安全_18


为什么这里是40呢,我们回到ida查看程序伪代码可以看到

中职网络安全比赛逆向入门教程(3)//xor亦或_逆向_19


i的值是0,然后小于等于39,从0开始到39,也就是40

然后我们亦或一下flag

中职网络安全比赛逆向入门教程(3)//xor亦或_十六进制_20


chr在python里的意思是将十六进制转换位ascii码,我们最后要看的是字符串,所以这里要转换一下,然后我们对flag一个一个亦或,亦或的值是1

然后输出亦或后的flag

中职网络安全比赛逆向入门教程(3)//xor亦或_逆向_21


完整代码如下:

flag = [0x6A,0x63,0x6A,0x47,0x51,0x40,0x7C,0x3E,0x30,0x6C,0x6F,0x35,0x3B,0x3A,0x69,0x76
,0x23,0x73,0x27,0x21,0x76,0x73,0x73,0x7C,0x7C,0x2A,0x29,0x2A,0x79,0x28,0x2F,0x41
,0x43,0x43,0x16,0x46,0x17,0x15,0x42,0x55]
bananaflag = ""
for i in range(40):
    bananaflag = bananaflag + chr(flag[i] ^ (i + 1))

print(bananaflag)

然后我们运行一下

中职网络安全比赛逆向入门教程(3)//xor亦或_十六进制_22

chmod +x exp.py

赋予程序执行权限

中职网络安全比赛逆向入门教程(3)//xor亦或_十六进制_23


flag:

kaiCTF{69fd964ff2a45cedde026d60aba5b23e}

总结

一次简单的逆向题笔记,有什么不会的都可以来问我


举报

相关推荐

0 条评论