摘要: #查壳: ##64位,进IDA: ###好家伙,不给看伪代码,来吧汇编走起: ####设置两个段,一个数据段(dseg),一个额外段(seg001)看看吧,dseg段中的内容'hgame{Fill_in_your_flag}' ####seg001段中的内容:(不想说话) ####关键: ####逐 阅读全文
posted @ 2023-05-09 22:52 TFOREVERY 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 查壳: 发现里边有个压缩包,弄出来看看: 再查壳看看: 啥也不是,把它扔进IDA: 没有伪代码,一个字‘找’,关键点(是否IDA能成功反编译,还是说用了java的反编译才行,是否有flag或者CTF之类的字样): 发现特殊字样,跟进: 大写String?大胆点进jadx: 成功,告诉我们什么?要大胆 阅读全文
posted @ 2023-05-09 22:39 TFOREVERY 阅读(286) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##发现是一个.pyc的文件,有啥好说的吗?直接 uncompyle6 咯得到.py文件: ###双击进入: ###有些人会因为from那行出错,应该是没装包,可以cmd,然后pip install pycryptodome ####大概就是将,从password.txt中读出一串密码 # 阅读全文
posted @ 2023-05-09 22:21 TFOREVERY 阅读(88) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##64位,进IDA: ###看正确输出: ####有要比较的两个字符a5mc58bphliax7j和Buf1,可以知道目的字符串是a5mc58bphliax7j,跟进看看: ####再看看Buf1,可以看见它是根据我们输入的字符进行sub_401570方法后得到的,那么我们跟进: ### 阅读全文
posted @ 2023-05-09 21:59 TFOREVERY 阅读(164) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##双击吧: ###简单的逻辑,不要怕那个循环,也不要去纠结那个循环。 ####首先看我们要找的是啥:b1嘛,也就是将flag每个字符转化成十进制后,再转成二进制,一个字符的二进制接后一个字符的二进制链接而成的字符串,再将这串字符串转为十进制。也就是b1 ####由除法原则我们知道,要想还 阅读全文
posted @ 2023-05-09 18:23 TFOREVERY 阅读(208) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##有壳,32位,先脱再进IDA: ####上来就给答案:得到NSSCTF{Just_upx_-d}{Just_upx_-d} 阅读全文
posted @ 2023-05-09 17:24 TFOREVERY 阅读(44) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##64位,进IDA: ###进来后发现c++经常用的std,(当然用c++的也有可能不经常见),跟进伪代码,找输出: ####有个判断跟进Human::~Human看看: ####调用了一个方法,字符串又指向了name,跟进方法:off_4863D0: ####发现存了一个基地址:跟进基 阅读全文
posted @ 2023-05-09 17:22 TFOREVERY 阅读(118) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##64位:进IDA: ###进来就给flag:跟进: ###一堆东西,秉承着赶时间的优良作风,只看有用的输出: ###挺简单一个随机数问题,找种子就行: ####上脚本: int main(){ srand(10086); for (int i = 1; i <= 13; i++) { 阅读全文
posted @ 2023-05-09 16:51 TFOREVERY 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 查个壳: 没得东西:双击进去咯: 随机序列问题: 这里要提几点点: 一:同一个种子下获得的再次获得的随机数是相同的 怎么理解这个呢,上图理解: 能看到我们两次的随机数是完全一样的,但是如果不加random.seed(1)这一句或者将种子换了,就不一定会得到相同的数字了: 二:random.getra 阅读全文
posted @ 2023-05-09 16:25 TFOREVERY 阅读(55) 评论(0) 推荐(1) 编辑
摘要: #查壳 ##64位,进IDA: ###你会发现,啥也没有,别急,再找找:空格切换视图: ####往下走: ####发现这里存了一堆东西:A转化成字符串: ####继续找: ####发现转化不了,看看是不是程序爆了: ###发现:是这条代码爆红了,没发现堆栈不平衡,试试nop掉: ###发现依旧没用, 阅读全文
posted @ 2023-05-09 15:44 TFOREVERY 阅读(332) 评论(0) 推荐(0) 编辑
摘要: #查壳: ##进入: ###不是很难的逻辑,浅浅来个爆破过了:(这里提醒一下,如果实在逆推不出来,可以考虑爆破,爆破应该是RE里人手一个的必备) result1 = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i' flag1 = '' num = 0 for 阅读全文
posted @ 2023-05-09 13:32 TFOREVERY 阅读(85) 评论(0) 推荐(0) 编辑
摘要: #查个壳: ##64位,运行: ###进IDA看看: ####简单加密函数,不多赘述上脚本就好: int main(){ string Des = "ylqq]aycqyp{"; string flag = ""; for (int i = 0; i < Des.size(); i++) { for 阅读全文
posted @ 2023-05-09 12:50 TFOREVERY 阅读(97) 评论(0) 推荐(0) 编辑
摘要: #拿到一个.py的文件,查个壳: ##进入看看是怎么个解密: ###挺长,感觉还有点像RC4的加密方式(这个不讨论),往下看逻辑: ####首根据输出,我们能知道,加密后的文档应该是enc,enc又是由crypt而来,crypt又是由cipher而来,而cipher又是由res而来: ###看看re 阅读全文
posted @ 2023-05-09 12:23 TFOREVERY 阅读(80) 评论(0) 推荐(0) 编辑
摘要: #C的源代码,查个壳: ##一般都是64位,直接双击吧,换个界面,成天看IDA也不好: ###也是简单的一个异或加密,上个脚本就好了,不多说啥: Des = 'd`vxbQd' flag = '' for i in Des: flag += chr((ord(i) ^ 2) - 1) print(f 阅读全文
posted @ 2023-05-09 11:30 TFOREVERY 阅读(67) 评论(0) 推荐(0) 编辑
摘要: #得到.exe,先查壳: ##么得壳,64位:运行一下看看:是个字符串的比较:进IDA: ###简单的一个加密(不多解释了)上个脚本就行: Des = '{34sy_r3v3rs3}' flag = '' for i in Des: if ord(i) == 51: flag += chr(101) 阅读全文
posted @ 2023-05-09 11:25 TFOREVERY 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 得到一个.py文件,一般是没壳的,不过还是要养成习惯,查个壳: 意料之中,啥也没有,打开文件: 给了我们一个加密逻辑,然后最后一行给了一个结果:那么就是根据上述的逻辑,反解密出flag就好了 分析一下上述逻辑: 首先对list进行变化得到key的值(怎么变化不用理,因为用不到,为啥?因为是异或昂,而 阅读全文
posted @ 2023-05-09 11:04 TFOREVERY 阅读(200) 评论(0) 推荐(0) 编辑