본문 바로가기

CTF/Codegate

Codegate Misc_babymisc Write up

일단 리버싱 리버싱문제이다....

요즘 리버싱을 공부하는데 나름 재밌게 풀수있는 문제인거같다.

 

### stage_1

_BOOL8 sub_400EA8()
{
  size_t v0; // rbx
  char *compare_1; // [rsp+8h] [rbp-98h]
  char *compare_2; // [rsp+10h] [rbp-90h]
  char *s; // [rsp+18h] [rbp-88h]
  char input_1; // [rsp+20h] [rbp-80h]
  unsigned __int64 v6; // [rsp+88h] [rbp-18h]

  v6 = __readfsqword(0x28u);
  s = "TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oig=";
  setbuf(stdout, 0LL);
  puts("[*] -- STAGE 01 ----------");
  printf("[+] KEY : %s\n", compare_1);
  puts("[+] Input > ");
  setbuf(stdin, 0LL);
  __isoc99_scanf("%99s", &input_1);
  decrypt_base64("TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oig=", &compare_1);
  decrypt_base64(&input_1, &compare_2);
  printf("[*] USER : %s\n", compare_2);
  v0 = strlen(s);
  return v0 == strlen(&input_1) && !strcmp(compare_2, compare_1) && strcmp(&input_1, s);
}

Stage 1 에 코드이다.

일단 입력을 받으면 입력받은거를 base64 decodeing 을 한다.

그래서 코드에서 있는 base64와 디코딩 한값을 비교를하는데 이게 좀 골떄리는게 base64 디코딩된거는 같아야되는데, Base64 encode 는 달라야된다. 이걸 우회하는 방법은 뒤에 NULL 을 넣어주는방법이있다.

 

TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5OigA

 

이런식으로 우회가 가능하다.

 

###stage_2

이거도 비슷하다 두개 입력을 받고 두개 인코딩값은 달라야되고 디코딩된 값은 같아야된다.

즉 똑같은 값을 두개 입력받을떄 같은거를 받을수 없다 근데 조건문을 보면 같아야된다.

 

이것도 NULL 을 넣어서 우회시켜주면된다

BOOL8 sub_401005()
{
  size_t v0; // rbx
  char *s1; // [rsp+0h] [rbp-100h]
  char *s2; // [rsp+8h] [rbp-F8h]
  char s; // [rsp+10h] [rbp-F0h]
  char v5; // [rsp+80h] [rbp-80h]
  unsigned __int64 v6; // [rsp+E8h] [rbp-18h]

  v6 = __readfsqword(0x28u);
  setbuf(stdout, 0LL);
  puts("[*] -- STAGE 02 ----------");
  puts("[+] Input 1 ");
  setbuf(stdin, 0LL);
  __isoc99_scanf("%99s", &s);
  puts("[+] Input 2 ");
  setbuf(stdin, 0LL);
  __isoc99_scanf("%99s", &v5);
  decrypt_base64(&s, &s1);
  decrypt_base64(&v5, &s2);
  v0 = strlen(&s);
  return v0 != strlen(&v5) && !strcmp(s1, s2);
}

YXNk

YXNkAA


이런식으로 입력을 시켜주면 우회가 가능하다.

 

###stage_3

이 문제는 문자를 필터링한다.

리눅스 명령어중에 head 라는 명령어가있는데 이걸 이용해서 우회시켜서 해주면된다.

 

그러면 풀리나~~!

 

'CTF > Codegate' 카테고리의 다른 글

Codegate pwnable_Super_marimo Write up  (0) 2019.10.28
Codegate pwnable_babypwn Write up  (0) 2019.10.25
Codegate Reverse_angrybird_ Write up  (0) 2019.10.24
Codegate pwnable_nuclear Write up  (0) 2019.10.24
Codegate pwnable_Watermelon Write up  (0) 2019.10.24