DASCTF-安恒月赛
2020:4:25 pm 1:30-5:30

入门reverse

F5可以看见关键代码

1
2
3
4
for ( i = 0; i < strlen(&input); ++i )
v6[i - 112] = (v6[i - 112] ^ 6) + 1;
if ( !strcmp(&input, "akhb~chdaZrdaZudqduvdZvvv|") )
std::operator<<<std::char_traits<char>>(&std::cout, "yes!you are right");

并不知道v6[i - 112]是啥,但是因为这是简单题所以把它看作是输入,然后走一波,结果就flag就出来了,当然我们也可以动调去看一下,妥妥的是输入

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string.h>

int main()
{
char a[100]="akhb~chdaZrdaZudqduvdZvvv|";
for(int i=0;i<strlen(a);i++)
{
a[i]=(a[i]-1)^6;
}
printf("%s",a);
}

encrypt3

这个题分析可知,

  1. 用户先输入一个魔法数字,这个数字是你后面输入的字符串长度的位数
  2. 输入一个字符串
  3. 他会将一个key的每一位与你的输入的每一位异或后输出(每一位都会异或所有你输入的字符串
  4. 所以爆破异或
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>

int main()
{
char a[100]="&,!';#\"surq!$uvw#x&ruq&\"qrur$psvyp#%y=";
for(int i=' ';i<'}';i++)
{
char b[100];
strcpy(b,a);
for(int k=0;k<strlen(b);k++)
b[k]=b[k]^i;
printf("%s\n",b);
}
}

sm

这题不会

文章作者: Usher
文章链接: https://usher2008.github.io/2020/04/26/DASCTF-%E5%AE%89%E6%81%92%E6%9C%88%E8%B5%9B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Usher