목록CTF's (38)
ipwn
올 해 코게 예선 포너블 문제 중 하나다. 트릭?이라면 트릭이고..아니라면 아니고 일단 라이브러리 내부 분석을 해 봐야 풀 수 있는 문제다. Mitigation[*] '/home/agh04140/pwn/codegate/2019/aeiou/aeiou' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) pie 빼고 다 걸려있다. Analyzingvoid __fastcall main(__int64 a1, char **a2, char **a3){ int v3; // [rsp+4h] [rbp-Ch] unsigned __int64 v4; // [rsp+8h] [rbp-8h] v4 = __re..
Mitigation[*] '/home/agh04140/pwn/SCTF/noleak/noleak' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)기본적으로 canary랑 nx랑 partial relro만 걸려있다.바로 분석을 해보자. Analyzingmainvoid __cdecl __noreturn main(){ unsigned int *v0; // rsi unsigned int v1; // [rsp+4h] [rbp-2Ch] FILE *stream; // [rsp+8h] [rbp-28h] unsigned __int64 v3; // [rsp+28h] [rbp-8h] v3 = _..
SCTF 할 당시에는 풀어볼 엄두도 못내고 그냥 놨던 문제인데, 다시 한 번 풀어봤다. Mitigation[*] '/home/agh04140/pwn/SCTF/catch_the_bug/bug' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 모든 미티게이션이 걸려있다. Analyzingvoid __fastcall main(){ int v0; // eax setup(); banner(); while ( 1 ) { while ( 1 ) { while ( 1 ) { menu(); v0 = read_int(); if ( v0 != 1 ) break; catch_bug(); } if ( v0 > 1 ..
rtdl 정리할 겸 yocto 라업 써야겠다. 갑자기 든 생각인데 왜 티스토리는 md를 지원 안할까... 컬러스크립트 쓰기 싫은데.. 좀 공부하고 github.io로 갈아타야지 무튼 라업 읽기전에 읽어야 할 문서 2개 땅땅 (got에 왜 libc 주소가 있을까요~~?~를 알자) https://bpsecblog.wordpress.com/2016/03/07/about_got_plt_1/https://bpsecblog.wordpress.com/2016/03/09/about_got_plt_2/ 굳 Mitigation[*] '/home/agh04140/pwn/codegate/2015/yocto/yocto' Arch: i386-32-little RELRO: No RELRO Stack: No canary found ..
보호기법 다 걸려있다. 분석 void __cdecl alloc(){ signed int i; // [rsp+4h] [rbp-102Ch] heap *ptr; // [rsp+8h] [rbp-1028h] char *alloc_buf; // [rsp+10h] [rbp-1020h] size_t nbytes; // [rsp+18h] [rbp-1018h] size_t read_buf_len; // [rsp+18h] [rbp-1018h] char read_buf[4096]; // [rsp+20h] [rbp-1010h] unsigned __int64 v6; // [rsp+1028h] [rbp-8h] v6 = __readfsqword(0x28u); ptr = malloc(0x20uLL); printf("- size : "..
이 문제는 진짜 진짜 진짜 진자(진자운동 아님ㅎ)쉽다. int __cdecl main(){ int result; // eax int buf; // [esp+0h] [ebp-18h] void *ptr; // [esp+4h] [ebp-14h] int v3; // [esp+8h] [ebp-10h] unsigned int v4; // [esp+Ch] [ebp-Ch] v4 = __readgsdword(0x14u); ptr = 0; v3 = 0; setvbuf(stdout, 0, 1, 0); while ( 1 ) { sub_8048624(); puts("your choice:"); read(0, &buf, 4u); result = buf; switch ( buf ) { case 1: if ( ptr ) { puts..
이번에 푼 문제는 betting문제이다. codegate본선 가서 풀었던 문제인데 예선의 베라보다 쉽다. 왠지 엄청 어려울줄 알고 한 문제라도 풀면 기적이라 생각하고 풀었었다 암튼 분석을 해보자. 보아하니 64bit바이너리에, 카나리, NX가 걸려있다. int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // eax unsigned int v4; // eax unsigned int v6; // [rsp+4h] [rbp-6Ch] int v7; // [rsp+8h] [rbp-68h] int v8; // [rsp+Ch] [rbp-64h] int v9; // [rsp+10h] [rbp-60h] int v10; // ..
떤 CTF인지는 잘 모르겠고 친구가 못풀겠다고 해서 한 번 풀어봤다.(etc로 카테고리를 넘긴 건 그냥 뭔 ctf인지 몰라서이다.) 이번 문제는 greeting문제였는데, 그냥 fsb 문제였던 것 같다? 아마도 일단 바로 분석해보겠다. int __cdecl main(int argc, const char **argv, const char **envp){ char s; // [esp+1Ch] [ebp-84h] char v5; // [esp+5Ch] [ebp-44h] unsigned int v6; // [esp+9Ch] [ebp-4h] v6 = __readgsdword(0x14u); printf("Please tell me your name... "); if ( !getnline(&v5, 0x40) ) ret..
흠 지금 생각해보니 디미고 신입생 대상으로 한 CTF인데 10위권 안에 못들다니 ㅜㅜ 위에 사람들이 전부 외부인이라지만 못 풀만한 수준의 문제들이 있다는 것 자체가 내 수준이 심각하다는 걸 의미할 것 같다. 그래 암튼 라업이나 쓰자. 이 문제도 생각보다 쉽게 풀렸다. int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax start_init(); while ( 1 ) { while ( 1 ) { menu(*(_QWORD *)&argc); v3 = scan_int(); if ( v3 != 2 ) break; Free(*(_QWORD *)&argc); } if ( v3 > 2 ) { if ( v3 =..
int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); while ( 1 ) { puts("welcome to the Coder world!\n"); puts("1.fight"); puts("2.shop"); puts("3.trainning"); puts("4.exit"); __isoc99_scanf("%d", &cho); switch ( cho ) { case 1: fight(); break; case 2: shop(); break; case 3: trainning(); break; default: puts("defalt input..