System Hacking/Buffer Overflow 6

[Buffer Overflow] Return Address Overwrite 실습 - (2)

참고 : dreamhack.io 환경 : ubuntu 16.04.7 [Buffer Overflow] Return Address Overwrite 실습 - (1-2) jiravvit.tistory.com/entry/Buffer-Overflow-Return-Address-Overwrite-%EC%8B%A4%EC%8A%B5-1-2 [Buffer Overflow] Return Address Overwrite 실습 - (1-2) 참고 : dreamhack.io 환경 : ubuntu 16.04.7 jiravvit.tistory.com/entry/Buffer-Overflow-Return-Address-Overwrite-%EC%8B%A4%EC%8A%B5-1 [Buffer Overflow] Return Address O..

[Buffer Overflow] Return Address Overwrite 실습 - (1-2)

참고 : dreamhack.io 환경 : ubuntu 16.04.7 jiravvit.tistory.com/entry/Buffer-Overflow-Return-Address-Overwrite-%EC%8B%A4%EC%8A%B5-1 [Buffer Overflow] Return Address Overwrite 실습 - (1) 참고 : dreamhack.io 환경 : ubuntu 16.04.7 Buffer Overflow란 프로그래머가 할당한 크기의 버퍼보다 더 큰 데이터를 입력받아 메모리의 다른 영역을 오염시키는 것이다. 이를 악용한다면 어딘가에 기계어 �� jiravvit.tistory.com 저번 시간에 이어서 실습을 해보도록 하겠당 저번 시간에 SFP랑 RET의 위치를 찾았다. 하지만 버퍼 오버플로우가 발..

[Buffer Overflow] Return Address Overwrite 실습 - (1)

참고 : dreamhack.io 환경 : ubuntu 16.04.7 Buffer Overflow란 프로그래머가 할당한 크기의 버퍼보다 더 큰 데이터를 입력받아 메모리의 다른 영역을 오염시키는 것이다. 이를 악용한다면 어딘가에 기계어 코드를 삽입한 후 Return Address의 함수 포인터를 공격자의 코드의 주소로 덮어 코드를 실행하는 것을 생각해볼 수 있다. 이 포스팅에서는 이것을 실습해보도록 하겠다. 버퍼 오버플로우를 실습할 example.c 이다. main 함수에서 프로그램의 argv[1]을 vuln 함수의 인자로 전달하는 것을 확인할 수 있다. vuln 함수에서는 함수의 인자인 src 버퍼를 buf 버퍼에 strcpy 함수를 이용해 복사한다. 여기서 버퍼 오버플로우 취약점이 발견된다. strcpy..

[Buffer Overflow] 8086 CPU 레지스터 구조

참고문헌 제목 : 해커 지망생들이 알아야할 Buffer Overflow 기초 작성자 : 달고나 출처 : www.wowhacker.com * 사진과 글은 위 문서를 참고하였습니다. 이전 글에서 하나의 segment의 구조를 알아 보았다. https://jiravvit.tistory.com/entry/Buffer-Overflow-8086-Memory-Architecture [Buffer Overflow] 8086 Memory Architecture 참고문헌 제목 : 해커 지망생들이 알아야할 Buffer Overflow 기초 작성자 : 달고나 출처 : www.wowhacker.com * 사진과 글은 위 문서를 참고하였습니다. 8086? : 인텔사에서 개발한 16.. jiravvit.tistory.com 이제 ..

[Buffer Overflow] 8086 Memory Architecture

참고문헌 제목 : 해커 지망생들이 알아야할 Buffer Overflow 기초 작성자 : 달고나 출처 : www.wowhacker.com * 사진과 글은 위 문서를 참고하였습니다. 8086? : 인텔사에서 개발한 16비트 마이크로프로세서이며, x86 아키텍처를 적용한 첫 제품이다. 시스템이 초기화 되기 시작하면 시스템은 커널을 메모리에 적재시키고 가용 메모리 영역을 확인하게 된다. 시스템은 운영에 필요한 기본적인 명령어 집합을 커널에서 찾기 때문에 커널 영역은 반드시 저 위치에 있어야 한다. 32bit 시스템에서는 CPU가 한꺼번에 처리할 수 있는 데이터가 32bit 단위로 되어 있다는 뜻이다. 그래서 메모리 영역에 주소를 할당할 수 있는 범위가 0~2^32-1 이다. 하지만 최근 시스템의 CPU는 한꺼번..