Theseus

4.06-4.12刷题笔记
Login这个题目没什么意思,不过打开就把我吓了一跳而已。一个PHP,不过逻辑很简单,没有什么难度,就是一个rot...
扫描右侧二维码阅读全文
12
2020/04

4.06-4.12刷题笔记

Login

这个题目没什么意思,不过打开就把我吓了一跳而已。
Login.png
一个PHP,不过逻辑很简单,没有什么难度,就是一个rot13加密

解密地址: http://www.rot13.de/index.php

考点:php代码、rot13加密算法

hamburger competition

考点:unity逆向

这个题目挺有意思的,unity开发的游戏逆向,非常让人摸不着头脑的逆向题目,可能是我没怎么做到这种unity开发的逆向题目

汉堡1.png
打开就是一个游戏,文件也是挺多的,没办法,完全没有思路。百度unity逆向的思路。

一看全是Android端的逆向经验,几乎找不到PE平台的资料。那只能看Android端的资料咯,估计差不多,凑合着看吧。

https://veritas501.space/2018/03/28/%E4%B8%A4%E6%AC%A1CTF%E6%AF%94%E8%B5%9B%E6%80%BB%E7%BB%93/

这是NULL2018年的一个题目
汉堡2.png
看这个文件

刚好我们找到这个文件在这里

汉堡3.png
一看有点像游戏的数据,估计和Android平台下面是差不多的

一个dll文件怎样分析呢?

https://www.cnblogs.com/ljyzl123/p/6076918.html

汉堡4.png
汉堡5.png
不管你输入啥,对加密都没有丝毫影响,一看就一个sha1加密

在线解密,然后再MD5,取前20位,flag就出来了。

BJDCTF2020-easy

看见这个easy就不对劲,easy就easy吧。PE文件,没有壳,动态调试加静态分析一通,没有结果,有点奇怪,难道是加了反调试???

找了一下没有反调试啊?那为什么动态调试没有结果呢?

一看程序来了一句 can you find me ?

没有输入点?

估计flag函数应该是吟唱起来,没有被调用,所以程序不会显示结果?那就去找他吧

找了一通就发现_ques这个函数有点意思,怎样实现调用呢?动态调试的时候修改EIP寄存器的值,让程序调用这个函数。就这个样找到了flag。

考点:没有什么考点?感觉就是一个脑洞题目。

[GWCTF 2019]xxor

中规中矩的题目,加密函数挺简单的,唯一学到的知识点就是,一个64位寄存器被分成两个32位寄存器来使用,为了我们阅读代码方便,我们可以修改一个数据的大小

修改完就一目了然,没有什么好说的。

还有一点就是,这个题目需要使用到z3,这个简单安装。

解密代码

#include<stdio.h>

int main(){
unsigned int xorm[6];
xorm[0] = 3746099070;
xorm[1] = 550153460;
xorm[2] = 3774025685;
xorm[3] = 1548802262;
xorm[4] = 2652626477;
xorm[5] = 2230518816;

int i=0,j=0,sum;
unsigned int temp[2] = {0};
unsigned int data[4] = {2,2,3,4};
for(i = 0;i<=5;i+=2){
    temp[0] = xorm[i];
    temp[1] = xorm[i+1];
    
    sum = 0x458bcd42 * 64;
    for(j = 0;j<64;j++){
        temp[1] -= (temp[0] + sum + 20) ^ ((temp[0] << 6) + 3) ^ ((temp[0] >> 9) + 4) ^ 0x10;
        temp[0] -= (temp[1] + sum + 11) ^ ((temp[1] << 6) + 2) ^ ((temp[1] >> 9) + 2) ^ 0x20;
        sum -= 0x458BCD42;
    }
    xorm[i] = temp[0];
    xorm[i + 1] = temp[1];
}

for (i = 0; i < 6; i++)
    printf("%c%c%c", *((char*)&xorm[i]+2), *((char*)&xorm[i] + 1), *(char*)&xorm[i]);



return 0;
} 

考点:Z3的使用、IDA静态分析

[HDCTF2019]Maze

一看题目就知道这个是一个迷宫题目

有一个加壳,不过壳挺简单的,脱壳机上手就脱就可以。

开始静态分析吧。

好像是一个花指令
maze1.png
那,手动去除一下花指令

把那个垃圾数据nop掉,然后IDA就自动解析出来汇编代码,为了让我们能够分析出伪代码,我们需要重新申明一下函数,把解析出来的这个块选中,按P就可以的到反汇编。
maze2.png
逻辑太清晰了,找到迷宫就直接走就可以。

考点:upx脱壳、花指令的去除

[FlareOn6]Overlong

这个题目没有什么技术含量

修改一个地方就可以的到答案,应该是这个比赛的签到题吧。国外的比赛题目,脑洞新奇。

![[FlareOn6]Overlong.png][9]
把长度修改大点,就可以得到答案。

[FlareOn4]IgniteMe

没啥能够学到的

就是纯分析

#include<stdio.h>
int main(){
unsigned int byte_403000[40] = {
0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C, 0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 
0x2B, 0x44, 0x6F, 0x6E, 0x56, 0x09, 0x5F, 0x45, 0x47, 0x73, 0x26, 0x0A, 0x0D, 0x13, 0x17, 0x48, 
0x42, 0x01, 0x40, 0x4D, 0x0C, 0x02, 0x69,0x0
};
int v4 = 4;
int input[40]; 
for(int i = 39;i>=0;i--){
    input[i] = byte_403000[i] ^ v4;
    v4 = input[i];
} 
for(int i = 0;i<40;i++){
    printf("%c",input[i]);
}
return 0;
 } 

考点:静态分析

最后修改:2020 年 04 月 12 日 11 : 39 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论