buuctf xor

前言:学习笔记 第六篇。 T T

常规思路: 下载 解压 查壳 

看不懂?看不懂,但是,步骤不变。。嘿嘿 QAQ 照样拉进去。

64位>>>拉进64位 IDA Pro!

常规思路:shift+F12 查找字符 再进入main函数。

这个认识,点进去。QAQ

F5 /TAB 转!! 不想看汇编。 T T

正向分析:

global是数组 其值是:看不懂? 没关系 不重要,先不管。

输入的b 进行某种加密,然后在判断其长度是不是33 不是则退出。(合理猜测 flag的长度为33)

当满足33时,进行异或操作:该位与前一位进行异或 且 第一位b[0]不进行异或操作。

比较b 与global的结果是否一致 if T >>>执行>>>Success  否则 >>>else 

猜测global是 b进行加密后的值。

逆向:C的脚本 python好久没用了,后面在复习。。

前置

编写思路/知识

:异或基础操作 >>> A^A = 0         A^B = C   B^C = A  【记不太清。。。哈哈哈】

###逆向逆向        >>>      倒着往回执行。

已知global是加密后的值(猜的)QAQ  >>>你倒着往回执行不就逆出来了吗?

global我缩写成g吧,太长了 沃趣 - -

异或时(正向):

b[1] ^=  b[0]  b[2]^= b[1] ... b[32] ^= b[31]     (别问为什么没有33 ,因为这是数组 从0开始算的..)

那么~逆!!把你加密的g 拿进去异或运算用g代替b(这样通俗好理解点>>>正向执行改成逆向执行)

所以>>>

g[32] ^= g[31]  g[31] ^= g[30] ...  g[1] ^= g[0] 

g[0] ^= ....想多了,审题!超级真蛋 (推荐去看。。。哈哈哈哈>>>补笔记无聊,发癫【已老实】)  

>>>为什么? 因为b[0]不参加。你g[0]干嘛要参加。。。。

欸,这个。。。算了,分析和 为什么那样写脚本 都可以借助这个来理解。

正题

【重点重点!!统一字符 养成习惯!】选中然后导出来(shift+e>>> 快捷键) 。。。导。。eeeeeeee

原因:你直接CV大法很可能会跑不出来【算法其他没错,字符太乱C报错】(已老实T T) 

然后就可以结合着分析去编写C脚本了。【没有python脚本 俺不会- -】

C脚本

为什么有乱码?我也不知道,不要问我 呜呜,继续学 T T

不对,乱码咋了 >>> 那咋了(快速逼近)

拿着flag去提交 正确。

ok,那这么说 ” get_line(__b, 0x100u);  “ 没啥用呗0.o? 干扰思路的。。。?

错误展示>>>  T ^ T  直接CV大法(已老实)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值