본문 바로가기

Pwnable

(9)
CTF 보호되어 있는 글입니다.
Root Me wargame ELF x86 - Stack buffer overflow basic 2 write-up 1번 문제와 비슷한 문제이다. 소스코드를 보면서 이해해보자. #include #include #include #include void shell() { setreuid(geteuid(), geteuid()); system("/bin/bash"); } void sup() { printf("Hey dude ! Waaaaazzaaaaaaaa ?!\n"); } void main() { int var; void (*func)()=sup; char buf[128]; fgets(buf,133,stdin); func(); } 버퍼 변수 위에 sup 함수의 주소 값을 담는 변수가 있고 그 변수로 함수를 호출한다. 128byte짜리 변수에 133byte를 입력받기 때문에 bof가 일어난다. bof를 통해 버퍼 변수에 12..
Root Me wargame ELF x86 - Stack buffer overflow basic 1 write-up 간단한 bof 문제이다. 소스코드를 열어보자. #include #include #include #include int main() { int var; int check = 0x04030201; char buf[40]; fgets(buf,45,stdin); printf("\n[buf]: %s\n", buf); printf("[check] %p\n", check); if ((check != 0x04030201) && (check != 0xdeadbeef)) printf ("\nYou are on the right way!\n"); if (check == 0xdeadbeef) { printf("Yeah dude! You win!\nOpening your shell...\n"); setreuid(geteuid(..
Root Me wargame ELF x86 - Format string bug basic 2 write-up % 안 써놓고 못 찾아서 1시간 넘게 삽질했다... 너무 힘드니까 소스코드를 열어보자. #include #include #include #include int main( int argc, char ** argv ) { int var; int check = 0x04030201; char fmt[128]; if (argc
pwnable.kr wargame bof write-up 간단한 bof 문제이다. 바로 소스코드를 열어보자. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } key가 0xcafebabe이면 쉘을 실행시켜준다. 입력은 overflowme 변수에 받기 때문에 key와 overflowme의 거리를 알면 bof를 할 수 있을 것이다. gdb로 실행시켜보자...
pwnable.kr wargame collision write-up pwnable.kr에 나와있는 접속 정보로 접속 전과 똑같이 flag는 열 수 없다. 소스코드를 확인해보자 #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
pwnable.kr wargame fd write-up pwnable.kr에 나와있는 접속 정보로 접속 시작하자마자 flag란 파일이 보이는데 열 수 없다. ls -al로 확인해보자 -r--r----- 1 fd_pwn root 50 Jun 11 2014 flag 권한이 없다. 이제 문제 프로그램의 소스코드를 확인해보자. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc
포너블 공부용 사이트 정리 보호되어 있는 글입니다.