easyasm
(1):easyasm 题目: https://pan.baidu.com/s/1MA-OeBpQ2DNe1th9AfbWQQ
提取码:tuyt
题解:
1.首先用exe去看有没有壳,发现没壳用IDA打开,发现不可以F5看反编译,于是就开始看汇编代码,它在干嘛
seg001:0000 seg001 segment byte public 'UNK' use16seg001:0000 assume cs:seg001seg001:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothingseg001:0000 db 91hseg001:0001 db 61h ; aseg001:0002 db 1seg001:0003 db 0C1hseg00 ...
BUU[FlareOn4]IgniteMe
BUU[FlareOn4]IgniteMe分析首先查壳,发现是32位的,然后放入IDA分析
然后发现有用的好像只有sub_4010F0和sub_401050这两个函数,接着一个个点进去看
这个函数其实作用并不大,接着去看看判断函数
这里1020点进去很显然是个读取数组长度的
1000点进去看
看不懂在干嘛,先跳过。接着是两个for循环,可以看到第一个for循环在异或,第二个for循环有个if,看看那几个数组,发现这是个与最后flag进行的一个比较
那么前面一个for循环时解题的关键,现在就差第一次for循环的v4值不知道了,于是下个断点去看
那么v4=4也出来了,开始写脚本
脚本#include<stdio.h>#include<string.h>int main(){ char a[]={0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C, 0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 0x2B, 0x44, 0x6F, ...
BUU[WUSTCTF2020]level3
关于base64换表及交叉引用BUU[WUSTCTF2020]level3分析首先查壳,发现是64位的,就放入64位IDA,直接F5进入主函数看看
看到了后面的一串需要base64解码的东西,然后前面还有一个base64encode的函数,这里应该就是base64的加密部分,点进去看看
这里双击这个函数,看看他里面是些什么
发现这就是常规的base64,没有什么不同,然后直接去解码
一看就是错的,然后我又去外面看了看,发现只有这一个函数会有问题,于是想起交叉引用,这里对base64_table交叉引用
发现新的函数,然后点进去看
发现他对表进行了改动,于是写脚本去弄到新的表
脚本#include<stdio.h>#include<string.h>int main(){ char a[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"}; for(int i=0;i<=9;i++) { char ...
恒月杯18年9月NewDriver
恒月杯18年9月NewDriver链接:https://pan.baidu.com/s/1SsB2FBJr1qqSy-qzFlui_g提取码:tuyt
分析首先查壳,发现是32位的文件
然后用IDA打开看看它在干什么
点开第一个函数sub_D01160看看它在干嘛
再点进去byte_D02138确定一下,发现是一个base64的加密
然后去看看第二个函数在干嘛
有%256,猜的没错的话应该是RC4加密在获得新的S盒,接着去第三个函数确定一下
能确定这个题目时base64+RC4的题了,接着去最外面
这里知道最后得到的密文就是byte_D02104
那么我们要得到明文(也就是新的S盒)就只差密匙了。
这里知道第三个函数是明文和密匙异或得到密文,这里用OD调试
根据汇编语言与伪C代码结合容易得出BL就是密匙,不断地调试容易得出完整的密匙
脚本然后开始写脚本
#include<stdio.h>int main(){ int a[] = {0x7A, 0xA6, 0x6A, 0xDA, 0xCD, 0x0F, 0x16, 0x74, 0x8B ...
2022DASCTF X SU 三月春季挑战赛 easyre题解
2022DASCTF X SU 三月春季挑战赛 easyre链接:https://pan.baidu.com/s/1TMYsvwPn6SXt4NmE74N3Dg提取码:tuyt
首先拿到文件,用exe去看看有没有加壳
发现这是asp的壳,我们就用
把它去壳,去壳之后放入IDA进行分析
首先shift+12去看有没有什么线索
发现这里有个right于是我们双击进去看看,然后Ctrl+x去看看它调用了些什么函数
我们一个个分析,sub_401500()这个函数里头
表示的是定义了b这个数组有256个元素
sub_40152B()这个函数
这里的sub_41A038(v1)这个函数可以知道就是v3,从最后的for循环很容易得到v3=42
所以result=42;
这里可以猜测v1是密匙,因为他是用的strcpy函数,我们就写一个脚本,看一下它这个ASCII码会转换成什么
可以发现密匙为[49,50,51,52,53,54]
然后这里最后的*(dword_492440 + i) = result,*(dword_492440 + i)先放着,继续往下看
sub_40159 ...