新手ctf逆向-----BUU [ACTF新生赛2020]rome WP

丢进ida

丢进去,找到主要函数

在这里插入图片描述在这里插入图片描述在这里插入图片描述

主要运算和判断就在这一块了

分析分析

在分析这一块,我自己一直被绕了进去,主要问题出现在v10到v13,我一直认为是四个字符,但是下面运算的循环有16次,以下是我错误的分析:
78行的第一个循环,是从v10开始的,我在想有16次循环,但未知的v10,v11,v12,v13只有四个,那剩下的12次就要对已有的v14~v26进行运算了,但85行的第二个循环确从v10和v15开始比较,这就很奇怪了,v10之后的16个字符经过了运算要和v15之后16个字符进行比较,俩串16个字符互相重叠,v15之后有的字符还没运算,这脚本该咋写。。。。
错误的分析到此为止,我在这卡了很久,一直在想这脚本该咋写,心里却觉得不咋对劲,这题不应该这么难啊,于是我进数据段看了看,发现了自己的憨批之处
在这里插入图片描述

这四个变量是int型的。。。。。每个都占了四个字节,也就是说每个变量都能放四个char,而其他的变量都是char型只能放一个字符,4*4=16,好吧,做运算的只有这16个未知字符

写脚本

这样一来,这脚本就好写多了呀,直接逐个爆破,爽滴很~
在这里插入图片描述a='ACTF{' v15='Qsw3sj_lz4_Ujw@l' s='' for k in range(len(v15)): for s in range(128): i = s if i > 64 and i <= 90: i = (i-51) % 26 + 65 if i > 96 and i <= 122: i = (i-79) % 26 + 97 if i == ord(v15[k]): a=a+chr(s) print(a+'}')
虽说算法很简单,但我在python恶心的缩进上还是浪费了时间,真心觉得还没大括号好用。。。。。(新人吐槽,巨巨勿喷)

flag{Cae3ar_th4_Gre@t}

总结

因为我的愚蠢,就因为个数据类型不清楚,太想当然,导致在这个并不难的题目上浪费了大量的时间,不应该不应该。。。。写个博客以示警告!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值