목록CTF's (38)
ipwn
이번에 푼 문제는 bugbug이다. 오랜만에 ctf문제 exploit해서 기분 좋다. 암튼 바로 시작하겠다. 후 쓰다보니 라업 쓰는게 문제 푸는 것 보다 더 어렵다. NX가 걸려있고 나머지는 아무것도 걸려있지 않다. 이제 ida로 까보자. int __cdecl main(){ unsigned int v0; // eax unsigned int v1; // eax int result; // eax int v3[6]; // [esp+4h] [ebp-A4h] int v4[6]; // [esp+1Ch] [ebp-8Ch] char buf; // [esp+34h] [ebp-74h] unsigned int ptr; // [esp+98h] [ebp-10h] FILE *stream; // [esp+9Ch] [ebp-Ch] ..
이번에 작성할 Writeup은 코게 2018에 나온 BaskinRobins31이다. 그냥 되게 간단히 풀리는 문제였다. 64bit이며, NX가 걸려있다. int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // eax unsigned int v5; // [rsp+8h] [rbp-8h] _BOOL4 v6; // [rsp+Ch] [rbp-4h] setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); v3 = time(0LL); srand(v3); v5 = 31; v6 = 0; puts("### This game is similar to the BaskinRobin..
이번엔 pwn5문제다. static linked 컴파일 되어있고 nx가 걸려있다. 휴 733kb이길래 갑자기 왜 이렇게 함수가 많아진거지 했는데, 그냥 스태틱 링킹 방식으로 컴파일 한거였다.바로 풀러 가보자. int __cdecl main(int argc, const char **argv, const char **envp){ print_beginning(); return 0;} print_beginning함수를 호출해준다. int print_beginning(){ int result; // eax char v1; // [esp+Fh] [ebp-9h] puts("Welcome to the TAMU Text Adventure!"); puts("You are about to begin your journey ..
이번에 푼 문제는 pwn4이다. 바로 ida로 까보겠다. int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ setvbuf(_bss_start, (char *)2, 0, 0); while ( 1 ) reduced_shell();} reduced_shell함수를 호출한다. int reduced_shell(){ char s; // [esp+Ch] [ebp-1Ch] puts("I am a reduced online shell"); puts("Your options are:"); puts("1. ls\n2. cal\n3. pwd\n4. whoami\n5. exit"); printf("Input> "); gets(&s); if ..
you can run, you can hide문제다. ssh로 접속하라고 한다. 접속하자. 그럼 이렇게 파일들이 있는데 딱 봐도 secrets는 페이크 같으니 .secret 디렉토리로 이동해보겠다. 근데 rbash에서 cd가 에러가 난다.그래서 bash쉘로 바꿔줬다. 그랬더니 cd가 된다. 그리고나서 .secret로 이동하고 ls -al로 숨김파일까지 보니, .dont_delete_me.txt파일이 있다.플래그가 적혀있을 것 같다. 그렇다 플래그가 있었다. gigem{TAMU_secret_society_qSD358OUYGcezTlFbqeh} 굳
이번에도 웹 문제이다. 접속해보겠다. 로봇이 춤춘다. 일단 코드를 보겠다. 사실 아까부터 짐작했지만 아무리 봐도 robots.txt에 뭔가 있을 것 같다. 진짜였다. html 들어가보자. 끝 gigem{craw1ing_bot$!} 굳
이 문제는 Veggies라는 문제인데, 웹 문제로 난이도가 쉽길래 한 번 풀어봤다. 사이트 접속하니까 이런 화면이 나온다. Cookies? 버튼을 눌러보겠다. 그리고 쿠키 보면 이런 값이 있다. 이 값을 base64 decode해보겠다. 그럼 플래그 나온다. 굳 gigem{CrAzzYY_4_CO0k!es}
이번엔 pwn3문제이다. NX가 안걸려있으니 shellcode를 때려박고, ret을 변조해 shell을 띄우면 된다. 일단 코드를 보자. int __cdecl main(int argc, const char **argv, const char **envp){ setvbuf(_bss_start, (char *)2, 0, 0); puts("Welcome to the New Echo application 2.0!"); puts("Changelog:\n- Less deprecated flag printing functions!\n- New Random Number Generator!\n"); echo(); return 0;} 또 echo함수를 호출한다. int echo(){ char s; // [esp+Ah] [e..
이번엔 pwn2 문제다. 난이도가 너무 낮아서 그냥 pwn3까지 하루에 다 올리겠다. int __cdecl main(int argc, const char **argv, const char **envp){ setvbuf(_bss_start, (char *)2, 0, 0); puts("I just love repeating what other people say!"); puts("I bet I can repeat anything you tell me!"); echo(); return 0;} echo함수를 호출한다. int echo(){ char s; // [esp+9h] [ebp-EFh] setvbuf(_bss_start, (char *)2, 0, 0); gets(&s); return puts(&s);} 이..
이번에 푼 문제는 pwn1 문제이다. 정말 쉽다. nt __cdecl main(int argc, const char **argv, const char **envp){ char s; // [esp+5h] [ebp-23h] int v5; // [esp+1Ch] [ebp-Ch] setvbuf(_bss_start, (char *)2, 0, 0); puts("This is a super secret program"); puts("Noone is allowed through except for those who know the secret!"); puts("What is my secret?"); v5 = 0; gets(&s); if ( v5 == 0xF007BA11 ) print_flag(); else puts("..