시스템 (5) 썸네일형 리스트형 Modern browser analysis and exploit development 보호되어 있는 글입니다. codegate junior nuclear shellstorm 에 바이너리 있음. start_routine 부분에 recv를 1298 이나 해버려서 bof가 일어난다. payload.py from socket import *from struct import * p=lambda x:pack(" 파일 디스크립터 0,1 : stdout / stdin2 : error3,4 : socket out / socket in ROPasaurusrex ROP 입문을 위해 ROP문제 중에서 가장 쉽다고 알려진 ROP사우루스 문제를 풀어보았다. 문제 자체는 매우 단순하다. read() 함수로 입력을 받고, (stdin) write() 함수로 "WIN" 을 출력해준다. (stdout) read() 에서 오버플로우가 발생한다. custom stack 은 .bss 영역이 8바이트밖에 없는 관계로 동적링크를 관리하는 .dynamic 에 커스텀 스택을 구성하였다. system 과 read 차이의 오프셋을 구해서 aslr 이 걸려있다고 생각하고 풀었다. 서버환경은 aslr 파일환경은 nx 이다. payload.py from socket import * from struct import * # file name is pro! p = lambda x : pack(" Linux 환경에서의 메모리 보호 기법 1) ASLR (Address Space Layout Randomization)메모리 상의 공격을 방어하기 위해서 주소 공간 배치를 난수화 시키는 기법.--> 스택,힙,라이브러리 등의 데이터 영역 주소 등을 난수화 시킨 주소로 프로세스 주소 공간에 배치하는 것. Window 에서 적용되는 것과 유사한 기법이며 리눅스 커널 2.6.12 이후로 적용되어 있음. 위 사진을 보면 왼쪽의 주소값이 바뀌는 것을 볼 수 있음. 2) DEP / NX (Not eXcutable)메모리 상의 보호를 위해 stack 과 heap 에서 코드가 실행되는 것을 막는 기법.공격자가 BOF공격을 일으키면 DEP가 적용된 상태에서는 실행권한이 없으므로 프로그램에 대한 예외처리가 발생되고 종료된다. 위 사진에서 주소값 오른쪽에 권한이 .. 이전 1 다음