본문 바로가기

D. 시스템/실습5

[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.
[LOB] 1번 gremlin LOS에 이은 BOF시리즈 LOB를 풀어보자 우선 gate로 로그인한다 이 C코드를 보니 버퍼의 크기는 256byte인것을 알 수 있고 buffer에 값이 입력되는 시기는 strcpy함수가 작동한 이후라는 것도 짚고 넘어가자 gremlin을 gdb로 접근할 권한이 없기에test로 복사하여 gdb에 접근하자 buffer의 크기가 256byte고SFP가 4byte니깐쉘코드를 포함하여 260byte를 채우고 그 후에 ret주소를 넣는식으로 payload를 작성하면 될거 같다.-------------------------------------------------------------------------------------------------AT&T 문법을 intel 방식으로 바꾸는법gdb 내에서set d.. 2017. 10. 14.
[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.
반응형