본문 바로가기

BOF5

[LOB] 3번 goblin 3번 코드를 보면 16바이트 밖에 되지않는다 그래서 환경 변수를 이용하자 올리고아래 코드를 이용해주소 값을 알아내자 그 후에 나온 주소를 바탕으로 파이프라인을 짜면 원래 하던 대로 하면 안된다... 이 문제는 인자를 받아주는게 아니기 때문에 이러한 방식으로 하면 끝! 2017. 11. 16.
[LOB] 2번 cobolt 2번 시작해보자 코드를 보니 buffer의 크기가 16byte이고 저번문제처럼strcpy함수이후에 buffer에 값이 들어가는 것을 볼 수 있다. 이렇게 되면 buffer+sfp 해서20byte가 들어가야한다.즉, 내가 가지고 있는 쉘코드를 넣기에는 너무 작은 크기이다..그래서환경변수를 이용하자 먼저 쉘코드를 환경변수에 등록 해놓고 저번에 1번 풀 때 사용한 주소를 받아오는 C코드를 이용하자 실행해서 shellCode를 실행할 수 있는 주소0xbffffc21을 얻었다. 이걸 바탕으로 작성해서 해봤는데안된다...ㅎ 왜그런지 모르겠어서다른 방법을 생각하던중에저번에 선배가 동아리때 shellcode를 뒤에 삽입하는 방법을 알려주셨는데그게 떠올랐다바로 해보자 먼저 입력되는 버퍼의 주소를 알아야 하기에strcpy.. 2017. 10. 15.
[C-LAB] EasyBOF 동아리 선배가 만드신 BOF문제를 풀어보자 우선 gdb를 이용해 무슨 함수가 있는지 봐보자 main함수가 있으니 main함수부터 봐보자 main함수를 보니 scanf를 이용해서 BOF를 일으켜 푸는 문제 인거 같다.먼저 코드를 위에서 부터 보면서 스택을 그려보자~ 스택이 이러한 구조로 되있는데 위 코드를 보면 ebp-0x4에 있는 값이 0xdeadbeef랑 같아야프로그램이 정상적으로 끝이 난다.그러기 위해서는0x68-0x4인100byte를 먼저 쉘코드와 더미로 채우고 0x4부터는 0xdeadbeef로 채우고SFP는 4byte니깐 아무문자로 4byte를 채우고RET에 buffer의 주소를 넣어서 쉘코드를 실행시키자 ---------------------------------------------------.. 2017. 10. 13.
[Pwnable.kr] bof ㅎㅇ 저 주소로 들어가서 C코드를 먼저 봐보자func 함수안에 있는 gets를 통해 BOF를 일으켜서key 값을 조건문에 맞도록 변경시켜 문제를 해결해야겠다그래서 func함수를 gdb를 이용해 까보았다 우선 gets함수의 인자에 들어가는 eax의 크기를 보면 위 네모칸과 같이0x2c그리고 키값이 들어있는 곳의 위치는 ebp+0x8이여서 크기는0x8 그래서 ebp+0x8까지 버퍼를 채우고 그 이후로는 조건문에 맞추기위해서0xcafebabe라는 값을 넣어야 한다. 그래서 채워야하는 버퍼의 값은8-(-44)해서52byte가 된다. 이것을 입력하기위해서 파이썬을 이용해 파이프라인을 작성하면 이렇게 flag값을 얻어서해결ㅎㅎㅎ 2017. 10. 13.
반응형