加载中...

第二届网刃杯网络安全大赛wp

第二届网刃杯的wp:

1.REVERSE:

1.freestyle:

拖进ida

main函数里提示了flag是md5的格式,func1和func2里有两个方程;func1的方程解得3327,func2得方程有多个解,49,105......等;试一下332749和3327105的md5加密,最后3327105的md5值为flag

flag{31a364d51abd0c8304106c16779d83b1}

int __cdecl main(int argc, const char **argv, const char **envp)
{
  fun1();
  fun2();
  puts("\nyes!!!");
  puts("flag is in md5 format");
  return 0;
}
__int64 fun1()
{
  char s[24]; // [rsp+0h] [rbp-20h] BYREF
  unsigned __int64 v2; // [rsp+18h] [rbp-8h]

  v2 = __readfsqword(0x28u);
  puts("Welcome to Alaska!!!");
  puts("please input key: ");
  fgets(s, 20, stdin);
  if ( 4 * (3 * atoi(s) / 9 - 9) != 4400 )
    exit(0);
  puts("ok,level_1 over!\n\n");
  return 1LL;
}
__int64 fun2()
{
  char s[24]; // [rsp+0h] [rbp-20h] BYREF
  unsigned __int64 v2; // [rsp+18h] [rbp-8h]

  v2 = __readfsqword(0x28u);
  puts("Welcome to Paradise Lost!!!");
  puts("The code value is the smallest divisible");
  puts("please input key: ");
  fgets(s, 20, stdin);
  if ( 2 * (atoi(s) % 56) != 98 )
    exit(0);
  puts("ok,level_2 over!");
  return 1LL;
}

2.Re_function:

附件压缩包有密码,看到注释里有一些十六进制,并且发现了png文件头,用这些十六进制数据新建了一个png文件,看到压缩包密码,3CF8.解压后可以看到1个exe和1个elf,func1.exe拖进ida,可以在main函数里看到加密函数,就是一个简单的异或,然后找到密文就可以写exp了,最后要注意是小端序,v11,v12,v13要反着写;最后得到SqcTSxCxSAwHGm/JvxQrvxiNjR9=;但这好像不是flag;继续打开func2(elf),有类似base64的加密,最后发现是base64换表,拿SqcTSxCxSAwHGm/JvxQrvxiNjR9=跑一下base64换表的脚本就可拿到flag。exp在下面。

flag{we1come_t0_wrb}

func1的exp:

#include<bits/stdc++.h>
unsigned char ida_chars[] =
{
  0x64, 0x71, 0x54, 0x54, 0x64, 0x78, 0x74, 0x78, 0x64, 0x41, 
  0x40, 0x48, 0x70, 0x6D, 0x18, 0x4A, 0x41, 0x78, 0x66, 0x72,
  0x41, 0x78, 0x5E, 0x4E, 0x5D, 0x52, 0x0E, 0x3D
};
int main(){
	  for ( int i = 0; i < 28; i += 2 )
    		ida_chars[i] ^= 0x37u;
    
printf("%s",ida_chars);
return 0;
}

func2的exp:

import base64
import string

string = "SqcTSxCxSAwHGm/JvxQrvxiNjR9="

tableBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
tableNew = "FeVYKw6a0lDIOsnZQ5EAf2MvjS1GUiLWPTtH4JqRgu3dbC8hrcNo9/mxzpXBky7+"
maketrans = str.maketrans(tableNew, tableBase64)
translate = string.translate(maketrans)
flag = base64.b64decode(translate)
print (flag)

2.ICS:

1.easyiec:

简单的流量,打开,直接搜索flag即可拿到flag。

flag{e45y_1eci04}

2.carefulguy:

打开附件,查找字符串“flag”,可以查到,然后追踪tcp流,在第3个流里发现了66,这是f的十六进制。接着看下面的流,666c6167连起来就是flag,然后就是接着找下面的流,把它们给拼起来就可以拿到flag。图如下:

flag{p4us315v3ry1nt3restic9}

posted @ 2022-05-15 12:00  happynoy  阅读(192)  评论(0)    收藏  举报