小言_互联网的博客

Buu_re

345人阅读  评论(0)

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/9
2*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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场