type
status
date
slug
summary
tags
category
icon
password
SimpleRev
首先找到main函数,为了增加可读性,将数字转换为字符
这段内容可以得到关键的text和key
审计过后,可以知道,key加密部分,是将key[]数组+32(小写化)
输入10个字符,转化后与text数组比较
刮开有奖
shift+F12
找到可疑字符串,跟进
找到伪代码,进行分析,最后的if语句是校验用的
关键在于sub_4010F0和sub_401000函数
• 前者伪代码改为c语言代码跑一遍,后者base64加密得到
v4
和v5
检查这个if判断句
拼接得到:
login
很罕见的只有一个txt文件和一个html链接
txt文件的意思是答案包上flag{}
点开login.html
按F12,寻找找到加密函数
第一次看见这种,经过搜索读懂,写出exp:
crackRTF
这是一道很有意思的题,经过搜索了解到一种可以看程序文件资源的工具——ResourceHacker
先用IDA打开
乍一看逻辑很复杂,但是慢慢分析可以得到
简单来说就是分别输入两次6位的密码
第一次输入与‘@DBApp’拼接,再进行哈希加密,加密后的密文与6E32D0943418C2C33385BC35A1470250DD8923A9对比
第二次输入与拼接后的第一次输入拼接(18位),进行哈希加密后,密文与27019e688a4e62a649fd99cadaafdb4e对比
分析到这里就该探索sub_40100A和sub_401019函数是哪种哈希加密方式,还是需要多搜一搜
前者为SHA1加密,后者为MD5加密
先从第一次输入入手,SHA1直接进行爆破
得到第一个输入123321
而第二个输入,MD5是如何都爆破不出来的,那么只有从这里入手
点开进行分析
这里其实不知道应该异或多少位,按道理应该拼接后的18位数据与名为'AAA'的文件的资源异或得到dbapp.rtf文件
但是实际上我们第二次输入密码也是6位,且经过搜索知道rtf文件头的内容刚好6位
那就可以想办法提取资源,与文件头异或,得到第二个密码
用010editor打开这道题,索引找到AAA位置
并没有找到比较像的数据,且右边都是IDA开的伪代码的字符串,找不到属于AAA下的资源是哪部分
通过向其他师傅询问,了解到一个工具ResourceHacker,可以查看和修改EXE文件
打开发现有AAA文件,提取前六个数据05 7D 41 15 26 01
进行解密
然后依次输入两个密码,得到文件,打开就是flag
level3
打开函数特别简单,base64加密得到下面那串字符串,base64_table表也没有修改,直接厨子梭
但是不对,我仔细打开base64_encode函数审计,也没有发现任何问题
这时在函数名窗口看见一个特别的函数,刚好在main之前,点进去
好家伙,原来是对base64_table表进行了改变(经过验证动调也可以发现表变了)
这下厨子梭了
youngter-drive
main函数有点不知所云,但是可以看到’CreateThread’函数,这里创建了两个进程
从开头的函数点进去查找逻辑,下面是分析和关键函数
分析后可以知道,两个线程交替进行,dword_418008内的值每进行一次进程就减一
这样可以得到第一个进程只对偶数索引的数据做了改变,奇数索引数据没变
得到脚本:
包上flag提交上去是错的
然后仔细审计发现dword_418008的初始值为0x1D(即29),减到0截止
那说明flag内容长度应该是30,但是这里cipher只有29位
最后一位不知道怎么找数据了,反正可见字符只有95个,挨个试(是E)
相册
题目提示是找到邮箱
apk文件先jadx打开看看
在’A2’里找到关键方法,回显邮箱是否正确,那么就寻找哪里调用了这个方法
这里可以得到MAILSERVER就是校验的数据,点进去
这里有两个关键,首先是使用了base64加密,数据在loadLibrary名为“core”里
修改题文件后缀为zip,解压,找到对应.os文件,丢进IDA
shift+F12找到三个很像base64加密后的数据
挨个尝试,第二个就是待求密文
xxor
稍微有点乱,稍微美化+审计得到:
关键在于xtea加密和验证
这里的a1就是cipher了,搓个脚本解出来
然后倒着回去解xtea
注意delta(即v5)超限的问题,使用long long int
Overlong
比较有意思的一道题
整道题没有输入,所以加密和密文都能找到,运行程序
根据语句和:可以猜测后面还有内容(其实是分析了才猜到)
- 关键在于这里,unk_402008里有175个数据,而这个加密函数只对前28位进行了操作
测试也能发现刚好打印出来的字符串长度为28
暂且有两种思路来解题:
- 手搓一遍加密,将175个数据全进行操作
- 用IDApro或者winhex等打补丁,让程序对175个数据进行操作
手搓比较复杂,我打补丁
Edit→Patch program→Change byte
然后Edit→Patch program→Apply patches to…(这里最好改下文件名,不然会覆盖文件)
得到flag
Universe_final_answer
读取输入后进入sub_860函数,再进行sub_C50函数
解方程,搓z3梭
还差一段即v4,动调一下得到是42
根据格式得到flag
羊城杯2020 easyre
逻辑清晰,对input进行三次加密,得到cipher,逆推分析三次加密就行了
第一重点进去能找到base64标准表,所以是base64加密
第二重是每13位一组,进行交换加密
第三重是凯撒加密,右移3
清楚了逻辑开始逆推:
再进行base64解密得到flag
[Zer0pts2020] easy strcmp
main函数言简意赅,但是必不可能这么简单
结合题目strcmp,猜测main里面的strcmp是假的
从funcs_889开始调用函数
跟进
这里可以发现strcmp函数在qword_201090地址,结合
可以发现,其实strcmp函数调用的是sub_6EA函数
qword_201090才是调用strcmp函数
[网鼎杯 2020 青龙组]singal
又见vm题,尝试日日
qmemcpy拷贝了456字节数据给opcode(456 / 4 = 114)
opcode是int类型,vm_operad只传入了114个数据,处理数据,合为int类型(去掉0和0xFF)
根据
可以知道,opcode每读到7,input[i]就与opcode的7的下一位比较,那么密文就是
既然密文知道,保留vm逻辑,可以直接爆破
[网鼎杯 2020 青龙组]jocker
这里看到有VirtualProtect,其实是对encrypt段进行了异或加密(SMC),直接点击encrypt是反汇编不了的,打个IDApython去掉
恢复过后,审计代码可以得到:
补全}提交不对,应该还有后半段flag
hhh眼神不好没看到这里有两个函数
涉及随机数了,直接爆破吧,只有一个随机数,需要让input和v3的第五位异或与随机数相等
[ACTF新生赛2020]SoulLike
函数太大,超过64k(0x10000),修改IDA文件可以实现
一个3000行的异或比较,直接爆破
- 作者:Sh4d0w
- 链接:https://sh4d0w.life//article/a6eaeb42-f5e5-4847-b6df-b219ec1fd168
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。