분류 전체보기
-
Python utils modulePython 2015. 1. 20. 05:06
import utils오류가 뜰경우 utils모듈이 존재하지 않기때문이다. https://pypi.python.org/pypi/utils 해당 링크로들어가 다운을받은후, 압축파일을 풀어준다. 그럼 dist폴더안에 또다른 압축파일이있는데 그것마저 풀어주면 setup.py가 나오게된다. 그럼 cmd로 해당경로로 가서 python setup.py install 해당명령을 입력해준다. 그럼 엄청나게 많은 문자열들이 나오는데 cmd를 재시작하고 python -> import utils해보면 정상적으로 임포트가 되는것을 확인할수있다
-
Python BOFPython 2015. 1. 20. 04:48
Python bof도 손쉽게 가능하다. 우선 c 라이브러리를 담아준다. 바로 크러쉬가 나는것을 방지해 입력하는 것을 하나 둔다. buffer에다가 AAAAA, 5바이트크기의 버퍼를 만든다. 그 밑에 overflow변수데다가 "A"해당 문자열을 100개 넣는다. 그럼 overflow는 100개의 A 문자가 담겨 100바이트를 가지게된다. 그리고 C함수의 strcpy함수를 사용해 buffer에 overflow값을 담는다. 소스 설명은 이렇게 해석할수있고, 중요한부분만 설명 하자면 strcpy로 문자열을복사해 buffer값에 넣는다. 하지만 위에 보게되면 buffer값은 5바이트 크기인데, overflow는 A를 100개넣어 100바이트의 크기를 가지고있다 5개가 넘쳐버려 오버플로우 즉, 넘치게되어 공격이 성..
-
접근 위반 핸들러Python 2015. 1. 20. 04:42
Access Violation, 즉 접근위반이라는것은 접근할 권한이없는 메모리에 사용자가 접근하려고 하거나 허용되지않은 방법으로 메모리에 접근 하려고할때 프로세스 내부에서 발생한다. 접근위반은 BOF,NULL포인터 잘못된사용등에서 뿜어낸다. Python에서 쉽게 해당 핸들러를 쉽게 구할수있다. PyDbg라는 모듈을 사용하게되면 접근위반핸들러 설치는 간단하다. 해당 모듈을 사용해서 접근위반핸들러를 사용하면, 예외 발생시킨 곳이 어디인지, 프로그램에러가 어떻게터졌는지 정보를 출력해주기때문에 아주 유용하게사용할수있다.
-
Integer OverflowHack/Pwnable 2015. 1. 18. 05:44
integer overflow. 간단하게 a와 b값을 입력받아서 곱이 0이되면 플래그를 출력하는 형식이다. 간단하게 강의를쓰기위해 0입력을 막지는 않았다 1*0은 0이 되기성립해 플래그가 출력된다. 0이 아닌 값을 입력해도 플래그 나올수있다. int형은 4바이트, 최대크기는 2147483647이다.이 이상으로 넘어가면 오버플로우가되어 음수가붙게된다. 즉, 2147483648 * 2147483648 = 0 이 성립된다. 실제로 한번보자 정상적으로 플래그가 출력된다. [요약] int 형의 최대크기는 2147483647, 넘어가게되면 오버플로우가난다. 2147483648 * 2147483648 = 02147483648 * 1 = 0
-
Memory BreakPointHack/Reversing 2015. 1. 16. 23:06
메모리브레이크포인트를 사용하기위해서는 메모리영역의 베이스주소, 페이지크기를 구해야한다. 그 해당메모리영역도 Guard Page로 설정해야한다. 하지만 CPU가 보호 페이지에 접근하려고 하면 GUARD_PAGE_EXCEPTION이라는 예외가 발생한다. 이 예외를 처리하는 핸들은 복원하고 실행이 되도록 만든다. 페이지의 크기를 제대로계산하기위해서는 운영체제 디폴트 페이지크기를 질의해야하는데,GetSystemInfo()함수를 이용해 SYSTEM_INFO구조체 정보를 얻어와야한다. dwPageSize가 시스템 페이지 크기값을 나타내서 해당 인자를 출력시키면된다.