분류 전체보기(82)
-
pwnable.kr [fd] writeup
안녕하세요!오늘은 pwnable.kr첫 번째 문제인 fd를 풀어보도록 하겠습니다! 문제를 클릭하면 아래와 같이 창이 뜹니다!그리고 리눅스를 키셔서 ssh fd@pwnable.kr -p2222를 복사, 붙여넣기 하시고 입력창에 guest라고 치시면!문제가 있는 폴더로 이동 되실겁니다! 이렇게 ls 명령어를 통해서fd 실행 파일과 fd 소스코드를 확인 할 수 있구요!flag 도 있네요!(물론 접근 권한은 없습니다..) 소스코드는 아래와 같습니다! 맨 위에 전역변수로 buf[32]가 선언되어있네요! 일단은 main에 인자가 argc랑 char* argv[ ]가 있는 걸보니input 방식이 argv 인 것 같네요! 그리고 argument가 2개보다 작으면안되구요!return 0; 하죠? 그리고 이제 fd라는 변..
2019.04.29 -
ROP (64byte) 문제 4번
안녕하세요!오늘은 ROP 64byte문제 4번을 풀어보도록 하겠습니다!파일은 제가 위에 놓도록 하겠습니다! 코드를 보니 지난 3번 문제와 달라진 게 있죠? 3번 문제에선 맨처음에 /bin/sh 문자열을 가진sh[ ] 배열이 있었는데이번 문제는 /bin/sh 문자열이 사라졌습니다! 바로 nothing 함수가 있네요!asm volatile 함수는 제가 3번 문제에서 알려드렸듯이,c언어에서 aseembly 코딩을 할 때 쓰는 함수 입니다! 그리고 vuln 함수는3번 문제와 똑같네요! 버퍼는 16byte만 선언되었는데,read 함수로 읽어오는 byte가 무려 256byte나 읽어오네요! 3번과 마찬가지로 버퍼 overflow 문제인데요! 달라진 점은 (1) /bin/sh가 없다는 것과!(2) asm volati..
2019.04.27 -
ROP (64byte) 문제 3번
안녕하세요!오늘은 rop 64byte3번째 문제를 풀어보도록 할게요! 해당 문제는 제가 위에 올려놓았습니다!코드는 아래와 같습니다! char형의 배열 sh에는 "/bin/sh" 문자열이들어가있네요! 당연히 이를 활용하라고 던져준거겠죠? 그 밑에 nothing 이라는 함수가 있는데asm volatile("~~~~~~~ ") 이런 형식으로 적혀있죠? asm volatile( )은 c언어에서 assembly 코딩을 할 때쓰이는 함수에요! 그냥 push %rdi pop %rdi ret 이 3 가지 어셈블리 명령어가 실행된다고 보시면 되요!(당연히 이것도 활용을 하라는 것이겠죠?) 그리고 vuln( ) 함수가 있습니다!함수 안을 살펴보니buf가 16바이트이고system함수에서 echo(출력해라) "INPUT: "..
2019.04.26 -
[Pwn] TJCTF 2019 Sledshop
안녕하세요! 오늘은 TJCTF 2019에서 출제된 sledshop 문제를 풀어보도록 하겠습니다! 해킹에 입문하는 미국 중*고등학생들을 위해 만들어진 대회이기 때문에 source코드도 제공되었습니다! 소스코드를 살펴보면 main 함수에서 3가지 함수가 실행됩니다! shop_setup, shop_list, shop_order 이 3 함수중에서 취약점이 존재하겠죠? (1) shop_setup 함수 id를 설정하는 함수 같네요! 저희가 입력하는 것도 없고 취약점이 없어보입니다! (2) shop_list 함수 그냥 printf 함수로 출력문만 있는 함수입니다! 여기도 취약점이 없어 보이죠! (3) 마지막으로 shop_order 변수도 canary 선언되어 있고! char형의 product_name 배열도 선언되어..
2019.04.25 -
ROP (64byte) 문제 2번
안녕하세요!오늘은 ROP 64bit 2번 문제를 풀어보도록 하겠습니다!파일은 위에 있습니다! 소스코드는 1번문제와 크게 달라진 것은 없습니다!vuln 함수는 여전히 버퍼 크기가 16byte인데256 byte를 읽어서 오버플로우가 일어나고 저희는 run 함수로 return 합니다!근데 run 함수에 이번에는 인자 arg가 있네요!arg의 값이 0x31337이여야 쉘이 따지네요! payload를 작성하기 전에checksec 명령어를 통해서 prob2 파일의 보호기법을 확인해보겠습니다! 근데 1번과 같이Partial RELRO (GOT overwrite 가능)Canary X (canary 기법 없음) NX enabled (스택의 실행권한 없음)NO PIE (바이너리 영역을 랜덤하게 배치) 보호기법은 똑같이 걸..
2019.04.24 -
ROP (64byte) 문제 1번
안녕하세요!오늘은 ROP(Return Oriented Programming)에 대해서알아보도록 할게요! 64bit의 ROP는32bit의 ROP와 방법이 조금 달라서문제를 통해서 알려드릴려고 해요!(이번 문제는 32bit 방식으로도 풀려요) 문제 파일은 제가 여기에 업로드 해놓았습니다!리눅스에서 wget명령어로 다운받으시면 됩니다!소스코드는 아래와 같아요! 되게 간단하죠? run이라는 함수가 불러지면system("/bin/sh") => 쉘을 시켜주는 놈알아서 쉘이 떨궈지죠? vuln 함수는buf에 16byte만 선언했는데!read 함수로 256byte을 읽어오니당연히 overflow가 발생하겠죠?main 함수에서 vuln 함수를 call 하고요! 어떻게 exploit 하실지 보이시나요? 일단 리눅스에서 아..
2019.04.22