首页
社区
课程
招聘
[已解决] [求助]一道CTF逆向题StrangeLanguage,pyinstaller打包,求详细wp 50.00雪花
发表于: 2021-9-19 21:00 6212

[已解决] [求助]一道CTF逆向题StrangeLanguage,pyinstaller打包,求详细wp 50.00雪花

2021-9-19 21:00
6212

第三届第五空间网络安全大赛的一道逆向题StrangeLanguage,初步分析了下,使用pyinstaller打包的,但main.py不太好提取,可能会考到brainfuck,推测是python3.8的程序。

 

具体问题:
1.如何提取main.py
2.这道题是否使用了什么特殊的保护手段,我印象中pyinstaller打包的程序很好提取的才对。
3.这道题目如何对输入函数、输出函数下断点?我试了几个常用的,没猜对。如果不清楚关键函数是什么,有什么技巧可以帮助确认关键函数。(除了procmon、api-monitor、单步调试 之外还有什么技巧)
4.具体wp
5.其他整理好的相关资源推荐,逆向相关的ctf题整理,但能够按照考点分类。

 

感谢!!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 515
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2

1.2.这道题目并没有对打包过程和得到的结果进行特殊处理,使用常规的方法提取就可以了。可以参考这篇文章:https://bbs.pediy.com/thread-264287.htm

import brainfuck
brainfuck.main_check()

提取出来的main.py就是上面的代码,只是导入了brainfuck模块并调用了main_check方法。程序能够正常运行,这个exe里面肯定是打包了这个模块的。

我用的是archive_viewer.py,在列表里面找到了这个。

这个pyd就是可执行文件,关于pyd的了解,可以看这个文章来逆向这个pyd:https://bbs.pediy.com/thread-259124.htm

我跟着这篇文章逆向,最后发现了这个字符串。

根据题目名字,可以知道这就是brainfuck的代码了。关于brainfuck,可以参考维基百科。

猜测这个程序就是brainfuck解释器,复制这段字符串到https://www.w3cschool.cn/tryrun/runcode?lang=brainfuck 在线执行,得到了相同的运行结果,那么就可以确定了。

github上有可以把brainfuck翻译到其他语言的项目:brainfuck2any => https://github.com/rdebath/Brainfuck 和 brainfuck2c => https://github.com/eterevsky/bfc

然后就是分析这个代码了,可以编译动态调试,我也在网上看到有人翻译成python调试的。

上传的附件:
2021-9-19 23:27
1
雪    币: 515
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
sb= "\x53\x0f\x5a\x54\x50\x55\x03\x02\x00\x07\x56\x07\x07\x5b\x09\x00\x50\x05\x02\x03\x5d\x5c\x50\x51\x52\x54\x5a\x5f\x02\x57\x074"[::-1]
a = "4"
for i in range(1,len(sb)):
        t = sb[i]
        a += chr( ord(a[i-1]) ^ ord(t))
print (a[::-1])

brainfuck 运行中的值都存放在一个数组上,动态调试可以推断是异或

最后于 2021-9-19 23:34 被LS_恶霸崔佛编辑 ,原因:
2021-9-19 23:32
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
还有种方法,就是直接看运行之后的内存状态,推测中间的处理过程,https://www.dcode.fr/brainfuck-language
2021-9-20 16:50
0
游客
登录 | 注册 方可回帖
返回
//