ssctf wirteup
1. web8 U盘病毒
UP_BOOT.img解压之后是两个文件autorun.txt和是男人你就下100层.exe
,autorun.txt中的内容是”你真厉害都到这了,看看这个游戏你肯定会喜欢的,但是据说这个游戏是被加了后门的,找到后门操作的文件的内容,取文件内容的16位md5值作为key!祝你好运…….”。
根据题目知道是男人你就下100层.exe
添加了后门,那么在执行的时候肯定要释放后门,所以找了一款 文件操作监控工具 进行监测,添加了文件创建,进程创建监测,然后发现在tmp目录中创建了RarSFX0目录,然后在RarSFX0中创建了1.exe, 1.vbs, 2.exe,以及test.txt,简单查看1.vbs启动1.exe和2.exe,1.exe是后门,2.exe是原始的是男人你就下100层.exe
,test.txt时候后门生成的,题目中要后门操作文件的·内容·16位md5作为key,那么1.exe,2.exe不大可能,只有1.vbs和test.txt了,提交了两次,test.txt的内容md5成功。
2.crack1
代码很简单,输入用户名密码之后,讲密码每个字符和408030所在内存的数据xor得到的值和用户名比较,相同则成功。用了个py脚本将用户名和408030内存的值xor得到密码,然后密码的md5即是key1
2
3
4
5
6
7
8
9
10k = [1, 2, 3, 4, 1, 5]#408030的值,还有其他的
n = "xxxxx"#用户名
a = ""
for i in range(0, len(n)):
k1 = ord(n[i])
k1 = k[i] ^ k1
a = a + chr(k1)
print a
3.crack2
反调试太多,没搞定
4.crack3
程序流程是,多次右键或者左键点击,会给403070写入R或者L字符,48次之后,点击确认,如果右键活左键点击姿势正确,就可以弹出正确的key。
验证过程是,通过48个L或者R可到key,如果通过48个L或者R的一个算法得到”查水表“三个字,那么点击姿势正确,key也正确,所以需要通过”查水表“的值逆推得到L和R的个数,具体算法是:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20do
{
v11[v2] = 0;
v3 = v1;
if ( __SETO__(v1, v1 + 8) ^ 1 )
{
do
{
v4 = 2 * v11[v2];
v5 = a1[v3] == 0x52;
v11[v2] = v4;
if ( v5 )
v11[v2] = v4 + 1;
++v3;
}
while ( v3 < v1 + 8 );
}
v1 += 8;
++v2;
}
”查水表“的值是B2 E9 CB AE B1 ED,通过上面算法和B2 E9 CB AE B1 ED推得点击姿势是:
RLRRLLRLRRRLRLLRRRLLRLRRRLRLRRRLRLRRLLLRRRRLRRLR
然后,操作一次,或者调试器内存修改,都可以得到key
5.crack4
题目是
”输入正确的密码,会释放出文件。key就在文件中。
tips:第一层密码为6为纯数字,第二层密码也是6位。“
粗略分析,输入第一次密码,释放并解密得到encrypt.exe,是一个exe,运行这个exe,输入第二次密码,释放并解密得到一个gif,密码验证算法是md5(md5(“HOWMPxxxxxx”)) == 09B2F924C20C5CA427EED2C5B98BEFBF,xxxxxx就是密码,先前一直想md5算出来,,没可能,后面发现释放文件之后的解密算法是xor,那么,嘿嘿,exe和gif格式的开头几个字节都是固定的,那么通过加密文件和正常文件的前6个字节xor即可得到密码,分别是564987和w!q&cs1
2MZ...... =>4D 5A 00 00 00 00 xor 78 6C 34 39 38 37 =>35 36 34 49 48 47 =》564987
GIF89aX =》47 49 46 38 39 61 58 xor 30 68 37 1E 5A 12 => w!q&cs
最后得到解密之后的图片,图片就有key
6.crack5
这到题太坑,点击注册啥反应没有,以为是没有调用注册功能函数,后来通过网上的特征码定位到了注册按钮的函数,地址是:00401640,结果一看代码全是混淆,各种int 3,jmp,,完全无法正常执行,所以点击之后无反应,尝试恢复,大概流程得到,先UpdateData获取到输入,然后一段算法比较,MessageBox注册成功或者失败。。但是加密算法那部分,实在是无力恢复了。