버퍼오버플로우(5)
-
pwnable.kr [collision] writeup
안녕하세요!오늘은 pwnable.krcollision 문제를 풀어보도록 하겠습니다! 소스코드는 아래와 같습니다! 제일 위에hashcode라는 변수에 0x21DD09EC라는 값이 담겨있네요! 그리고 check_password라는 함수가 있습니다!인자로는 char형의 포인터가 들어갑니다!근데 이후에 바로 이 포인터가 형 변환이 일어납니다! char 형의 포인터에서 int형의 포인터로 말이죠!char* p -> int * p(이 바뀌는 부분이 끼칠 영향은 아래에서 더욱 자세하게 설명드릴게요) 왜냐하면 (int*)p라고 되어있잖아요!그리고 이 변환된 pointer는 ip의 포인터에 담기게 됩니다! 그리고 i라는 변수가 선언되고res라는 변수도 0으로 선언과 동시에 초기화가 됩니다 그리고 5번 for문을 돕니다!..
2019.05.02 -
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 -
[어설픈] LOB 3번 cobolt 문제풀이
안녕하세요!오늘은 LOB 3번Cobolt 문제를 풀어보도록 하겠습니다! 문제에 들어가니 아래와 같은 소스코드가주어지네요! 근데 사실 바로 직전 문제gremlin과 달라진 게 별로 없습니다!달라진 게 있다면 gremlin: argv 형식으로 입력을 받았다cobolt: stdin(standard input)으로 입력을 받는다 이게 끝이에요....입력 방식만 차이가 있지풀이나 exploit은 똑같아요 왜냐면 소스코드를 보시면버퍼가 16byte가 있죠?그리고 gets 함수로 입력을 받고 그 값을 버퍼에 저장다음에 버퍼에 저장된 값을 printf 함수로 출력! 여기서 취약점은 마찬가지로 gets 함수가 얼만큼 읽을지 크기를 안정해줘서오버플로우가 발생하는 것이죠? 즉 gremlin과 마찬가지로 main 함수의 re..
2019.03.13 -
[어설픈] LOB 2번 gremlin 문제풀이
안녕하세요!오늘은 LOB의 두 번째 문제!gremlin을 풀어보도록 하겠습니다! 우선 코드를 보니 아래와 같네요!버퍼의 크기가 gate에 비해서현저하게 줄었네요!16 byte 밖에 안되네요 ㅠㅠ 그리고 argument가 2개보다 작으면 argv error라고 뜨네요! 그리고 argv[1]의 값을buffer에 복사하네요!(여기서 취약점이 발생하죠! 얼만큼 copy할지 크기 지정이 없으니....ㅎㅎ)그리고 printf함수가 buffer에 저장된 값을 출력하네요! gate에서도 보셨듯이,red hat linux 6.2에서는 스택 사이에 dummy값이 존재하지 않습니다! [gremlin의 스택구조]buffer (16byte)EBP(4byte)RET_ADDR(4byte).....(이후 스택) 근데 저희가 gate..
2019.03.11