일단 리버싱 리버싱문제이다....
요즘 리버싱을 공부하는데 나름 재밌게 풀수있는 문제인거같다.
### 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 |