【perl】【buu】[WMCTF2020]easy_re


也是学到新的东西了


这题经过perl加密过的

查克无壳64位 ida

找了半天没找到一点有用的东西,倒是有几个奇怪字符

strang_string

后来看了一下其他人的wp发现在字符串不断出现的perl是个提示


perl

【看雪perl例题】https://bbs.kanxue.com/thread-67651.htm

00405276 |. 83C4 0C |add esp, 0C
00405279 |. 8945 F0 |mov dword ptr [ebp-10], eax
0040527C |. 85C0 |test eax, eax
0040527E |. 0F84 83000000 |je 00405307
00405284 |. 68 5CCF4000 |push 0040CF5C ; ASCII “script”
00405289 |. 50 |push eax
0040528A |. 8B03 |mov eax, dword ptr [ebx]
0040528C |. FF30 |push dword ptr [eax]
0040528E |. E8 CBEFFFFF |call 0040425E
00405293 |. 83C4 0C |add esp, 0C
00405296 |. 8943 24 |mov dword ptr [ebx+24], eax
00405299 |. 85C0 |test eax, eax
0040529B |. 0F84 32020000 |je 004054D3
004052A1 |. 68 50CF4000 |push 0040CF50 ; /s = “hashline”
004052A6 |. FF75 F0 |push dword ptr [ebp-10] ; |/s
004052A9 |. E8 38360000 |call <jmp.&MSVCRT.strlen> ; |\strlen
004052AE |. 8BD8 |mov ebx, eax ; |
004052B0 |. C70424 40CF40>|mov dword ptr [esp], 0040CF40 ; |ASCII “-e#line 1 “”%s”””
004052B7 |. E8 2A360000 |call <jmp.&MSVCRT.strlen> ; \strlen
004052BC |. 59 |pop ecx
004052BD |. 03D8 |add ebx, eax
004052BF |. 53 |push ebx
004052C0 |. E8 46EEFFFF |call 0040410B

这个地方0040528E call 0040425E 就是解压的过程,直接f8过了以后eax里面就是你的源代码了。

【perl简单介绍】https://www.bilibili.com/video/BV1qB4y1G7B3/?spm_id_from=333.880.my_history.page.click&vd_source=1c1b392be21faf2076e99a04a9cb6b82

perl是解释语言,perlapp只是把你的perl程序压缩后放在资源里面,执行的时候会解压的。


解题

在ida里动调找太坐牢了所以选择行x64dbg

F8单步一直到进入主函数

main


进入主函数后进行搜索script

search


跟进后在这里打断点

break


开始单步调试

flag

flag被解密出来