Buu_re_刮开有奖
题目来源:
https://buuoj.cn
re
题目名称:刮开有奖
分析工具:ida pro 、pe
分析环境:win10
开始!!!
1、运行程序
运行完就是这个界面[^1]
2、Pe查看程序信息
32位无壳那就直接ida[^1]
3、进入ida开始分析程序
1.1、查找可以字符串
这里并没有发现有什么可疑的地方[^1]
1.2、分析winmain函数
1.3 、F5看看
1.4、这里主要看Dialogfunc参数跟进查看
定义了一堆变量 [^1]
1.5、继续看下面
第一行是给string清零
第二行是获取对话框文本之后赋值给string
第三行这里规定了string的长度为8
这里看到10个参数[^1]
注这里应该是一个数组这10个参数应该是数字里的字符[^1]
Emm猜测是字符串的ascll码写了一个python脚本解了一下[^1]
strs = ['90','74','83','69','67','97','78','72','51','110','103']
arr = []
for i in range(len(strs)):
b = chr(int(strs[i]))
arr.append(b)
print(arr)
脚本写的有点水看看就好hhh[^1]
跑出来一堆字符串先不管继续分析 [^1]
1.6、算法分析
这里应该是对数组v7在做处理
这块一开始嫌烦就没有仔细去分析看了看网上wp的说法这个是一个排序算法
对上面的10个参数进行选择排序从小到大那我就直接用改改脚本加一个sort方法排一下[^1]
strs = ['90','74','83','69','67','97','78','72','51','110','103']
arr = []
for i in range(len(strs)):
b =int(strs[i])
arr.append(b)
arr.sort()
print(arr)
这里就不转码了[^1]
1.7、继续跟进查看
1.8、有点可疑跟进查看
1.9、byte_407830分析
一开始没看出来啥[^1]
再跟进这个参数后明白这里是对字符串做了base64编码
很有可能我们之后flag是要解码的[^1]
1.10、继续分析
String = 51+34=85=’U’
V19 = 74=’J’
V20 = 693+141/4 = 87 =’W’
V21 = 90/92*4 = 80 =’P’
‘ak1w’ base64解码得‘jMp’
‘V1Ax’ base64解码得’ WP1’
根据上面得提示最后结出来的字符是有8个所以最后得到的flag{UJWP1jMp’}
刚开始接触逆向所以ida用的不熟[^1]
对应一下就可以知道最后的顺序的
分析就到这里了对于逆向的接触还不多还在学习当中如果有错误欢迎各位师傅们指出来[^1]
By_nOnE&xiaoyu
转载:https://blog.csdn.net/qq_44288989/article/details/106782489