type
status
date
slug
summary
tags
category
icon
password

SimpleRev

首先找到main函数,为了增加可读性,将数字转换为字符
notion image
这段内容可以得到关键的text和key
审计过后,可以知道,key加密部分,是将key[]数组+32(小写化) 输入10个字符,转化后与text数组比较

刮开有奖

shift+F12
notion image
找到可疑字符串,跟进
找到伪代码,进行分析,最后的if语句是校验用的 关键在于sub_4010F0和sub_401000函数 • 前者伪代码改为c语言代码跑一遍,后者base64加密得到v4v5
notion image
检查这个if判断句
notion image
拼接得到:
 

login

很罕见的只有一个txt文件和一个html链接 txt文件的意思是答案包上flag{} 点开login.html
notion image
按F12,寻找找到加密函数
第一次看见这种,经过搜索读懂,写出exp:
 

crackRTF

这是一道很有意思的题,经过搜索了解到一种可以看程序文件资源的工具——ResourceHacker
先用IDA打开
乍一看逻辑很复杂,但是慢慢分析可以得到
notion image
简单来说就是分别输入两次6位的密码 第一次输入与‘@DBApp’拼接,再进行哈希加密,加密后的密文与6E32D0943418C2C33385BC35A1470250DD8923A9对比 第二次输入与拼接后的第一次输入拼接(18位),进行哈希加密后,密文与27019e688a4e62a649fd99cadaafdb4e对比
分析到这里就该探索sub_40100A和sub_401019函数是哪种哈希加密方式,还是需要多搜一搜 前者为SHA1加密,后者为MD5加密
notion image
notion image
先从第一次输入入手,SHA1直接进行爆破
得到第一个输入123321
而第二个输入,MD5是如何都爆破不出来的,那么只有从这里入手
notion image
点开进行分析
notion image
这里其实不知道应该异或多少位,按道理应该拼接后的18位数据与名为'AAA'的文件的资源异或得到dbapp.rtf文件
notion image
但是实际上我们第二次输入密码也是6位,且经过搜索知道rtf文件头的内容刚好6位 那就可以想办法提取资源,与文件头异或,得到第二个密码
用010editor打开这道题,索引找到AAA位置
notion image
并没有找到比较像的数据,且右边都是IDA开的伪代码的字符串,找不到属于AAA下的资源是哪部分
通过向其他师傅询问,了解到一个工具ResourceHacker,可以查看和修改EXE文件
notion image
打开发现有AAA文件,提取前六个数据05 7D 41 15 26 01 进行解密
然后依次输入两个密码,得到文件,打开就是flag
 

level3

打开函数特别简单,base64加密得到下面那串字符串,base64_table表也没有修改,直接厨子梭
notion image
但是不对,我仔细打开base64_encode函数审计,也没有发现任何问题
notion image
这时在函数名窗口看见一个特别的函数,刚好在main之前,点进去
notion image
好家伙,原来是对base64_table表进行了改变(经过验证动调也可以发现表变了)
notion image
这下厨子梭了
 

youngter-drive

notion image
main函数有点不知所云,但是可以看到’CreateThread’函数,这里创建了两个进程 从开头的函数点进去查找逻辑,下面是分析和关键函数
notion image
分析后可以知道,两个线程交替进行,dword_418008内的值每进行一次进程就减一
这样可以得到第一个进程只对偶数索引的数据做了改变,奇数索引数据没变
得到脚本:
包上flag提交上去是错的
然后仔细审计发现dword_418008的初始值为0x1D(即29),减到0截止
那说明flag内容长度应该是30,但是这里cipher只有29位
最后一位不知道怎么找数据了,反正可见字符只有95个,挨个试(是E)
 

相册

题目提示是找到邮箱
apk文件先jadx打开看看
notion image
在’A2’里找到关键方法,回显邮箱是否正确,那么就寻找哪里调用了这个方法
notion image
这里可以得到MAILSERVER就是校验的数据,点进去
notion image
这里有两个关键,首先是使用了base64加密,数据在loadLibrary名为“core”里
修改题文件后缀为zip,解压,找到对应.os文件,丢进IDA
shift+F12找到三个很像base64加密后的数据
notion image
挨个尝试,第二个就是待求密文
notion image
 

xxor

notion image
稍微有点乱,稍微美化+审计得到:
notion image
关键在于xtea加密和验证
这里的a1就是cipher了,搓个脚本解出来
然后倒着回去解xtea
注意delta(即v5)超限的问题,使用long long int
 

Overlong

比较有意思的一道题
notion image
整道题没有输入,所以加密和密文都能找到,运行程序
notion image
根据语句和:可以猜测后面还有内容(其实是分析了才猜到)
notion image
  • 关键在于这里,unk_402008里有175个数据,而这个加密函数只对前28位进行了操作
notion image
测试也能发现刚好打印出来的字符串长度为28
暂且有两种思路来解题:
  1. 手搓一遍加密,将175个数据全进行操作
  1. 用IDApro或者winhex等打补丁,让程序对175个数据进行操作
手搓比较复杂,我打补丁
notion image
Edit→Patch program→Change byte
notion image
然后Edit→Patch program→Apply patches to…(这里最好改下文件名,不然会覆盖文件)
notion image
得到flag
 

Universe_final_answer

notion image
读取输入后进入sub_860函数,再进行sub_C50函数
notion image
解方程,搓z3梭
还差一段即v4,动调一下得到是42
notion image
根据格式得到flag
 

羊城杯2020 easyre

notion image
逻辑清晰,对input进行三次加密,得到cipher,逆推分析三次加密就行了
第一重点进去能找到base64标准表,所以是base64加密
第二重是每13位一组,进行交换加密
notion image
第三重是凯撒加密,右移3
notion image
清楚了逻辑开始逆推:
再进行base64解密得到flag
notion image

[Zer0pts2020] easy strcmp

main函数言简意赅,但是必不可能这么简单
结合题目strcmp,猜测main里面的strcmp是假的
notion image
notion image
从funcs_889开始调用函数
notion image
跟进
这里可以发现strcmp函数在qword_201090地址,结合
notion image
可以发现,其实strcmp函数调用的是sub_6EA函数
qword_201090才是调用strcmp函数
 

[网鼎杯 2020 青龙组]singal

notion image
又见vm题,尝试日日
qmemcpy拷贝了456字节数据给opcode(456 / 4 = 114)
opcode是int类型,vm_operad只传入了114个数据,处理数据,合为int类型(去掉0和0xFF)
根据
notion image
notion image
可以知道,opcode每读到7,input[i]就与opcode的7的下一位比较,那么密文就是
既然密文知道,保留vm逻辑,可以直接爆破

[网鼎杯 2020 青龙组]jocker

notion image
这里看到有VirtualProtect,其实是对encrypt段进行了异或加密(SMC),直接点击encrypt是反汇编不了的,打个IDApython去掉
恢复过后,审计代码可以得到:
notion image
补全}提交不对,应该还有后半段flag
notion image
hhh眼神不好没看到这里有两个函数
notion image
涉及随机数了,直接爆破吧,只有一个随机数,需要让input和v3的第五位异或与随机数相等

[ACTF新生赛2020]SoulLike

函数太大,超过64k(0x10000),修改IDA文件可以实现
一个3000行的异或比较,直接爆破
 
X86汇编语言学习TEA加密
Loading...
Sh4d0w
Sh4d0w
漫长学习路ing
最新发布
360加固复现学习
2025-6-15
java反射机制
2025-6-14
classLoader机制
2025-6-14
dex文件结构
2025-6-14
APP启动流程
2025-6-14
JNI学习
2025-6-14
公告
Welcome to Sh4dw’s blog!
敬请指导,Q 467194403