본문 바로가기

CTF/Codegate

(7)
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(..
Codegate pwnable_Super_marimo Write up 보호되어 있는 글입니다.
Codegate pwnable_babypwn Write up Canary 문제를 거의 풀어본적이 없었는데 요즘 좀 많이 푸는것처럼 느낀다 ㅎㅎ 이 문제 비슷한 유형을 저번에 본적이 있었는데 익스를 마저 못했다. 이번에는 다행이도 익스는 되었다. 일단 먼저 IDA로 보자. unsigned int sub_8048A71() { int v1; // [esp+1Ch] [ebp-3Ch] char v2; // [esp+24h] [ebp-34h] unsigned int v3; // [esp+4Ch] [ebp-Ch] v3 = __readgsdword(0x14u); memset(&v2, 0, 0x28u); while ( 1 ) { while ( 1 ) { while ( 1 ) { sub_80488B1("\n===============================\n"); sub_8..
Codegate Reverse_angrybird_ Write up 보호되어 있는 글입니다.
Codegate pwnable_nuclear Write up 보호되어 있는 글입니다.
Codegate pwnable_Watermelon Write up 보호되어 있는 글입니다.
Codegate pwnable_BaskinRobins31 Write up 베스킨 라빈스다 일단 바이너리 실행시켜보면 절~~~~대 못이긴다. 그래서 ida로 확인해봤더니 read 함수가 존재했다. 0딱봐도 오버플로우다. S가 0xb0 이라 10진수로 바꾸면 176이다. SFP 까지하면 184바이트인데 184바이트로 오버플로우시키면된다. 근데 우리는 leak 을 시켜줘야한다. 그래서 처음에 입력을 받고 다시한번 your turn 이라는 함수를 호출해서 릭한걸로 다시 익스를 해야한다. from pwn import * p = process('./BaskinRobins31') binf = ELF('./BaskinRobins31') libc = ELF('/lib/x86_64-linux-gnu/libc.so.6') puts_offset = libc.symbols['puts'] system..