RE upx2023⚓︎
改UPX头脱壳不多说了 大致分析后发现利用伪随机数加密 14行 可以看到伪随机数种子是根据时间戳生成的,查询一下文件创建时的时间戳然后在其附近爆破
Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
CFF Explorer打开文件 或者也可以在windows属性里查看创建时间,利用在线工具转化为时间戳
30行 有密文unk_46A020
拿非0的42个数据
如何检验爆破结果?20行的 change函数应该对输入进行了加密,但是静态分析太复杂了
我们可以动调到change之后看一下结果
进v7看一下,注意按D切换字节模式(这里dq或者dd都可以),不同的题偏移地址字节长度可能不同
加密前:flag{0123456789zbcdexQhijkymnABCDEFGHIJKL}
加密后:f{37bxjnDHLlg02468zceQikmACEGIK}a159dhyBFJ
可以看到字符没有改变,仅仅是变换了顺序
变换后第1、2、12、13、33位是由原来的“flag{”移动过去的,相应位置的密文异或正确seed生成的密钥流就应该得到相应的字符。那么只要根据相应位置进行爆破。
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
|
Python | |
---|---|
1 2 3 4 5 6 7 8 |
|