본문 바로가기

immunity debugger 가젯 검색 팁 immunity debugger 가젯 검색 팁 1. 보통 mona.py 를 이용해서 rop, seh, stackpivot 등 원하는 가젯 찾는 자동화 기능 지원, 2. 또한 !mona findwild -s "명령어 # 명령어 # 명령어" 등으로도 찾기 가능. (r32, * 와일드카드 제공) 3. 디버거 옵션으로도 찾아보자. Search for All Sequences 에서 CONST, R32 등 와일드카드를 이용하여 add esp, CONST; pop R32; ret; 이런식으로 이뮤니티 디버거 혹은 올리디버거 내에서 순차적으로 검색 가능. [모나 메뉴얼] https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/ mona.py – the manua..
shift 연산으로 원하는 값 만들기 팁 shift 크기를 내가 마음대로 결정할 수 있는 경우가 있다. shift 연산이야 그냥 하면 되는데 왜 이런 글을 썼을까? 32비트 기준으로 맨오른쪽에 있는 비트 1이 맨왼쪽끝으로 오려면 shl 31 할 때이다. 즉 shl 32 부터는 32비트 레지스터에 담겨있던 기존의 모든 값이 shift 연산으로 날아간다. 그래서 0이 되는 것이 아닌가? 했는데 결과가 그렇지 않아서 의문이 생겼다. x86 guide에 따르면 다음과 같다. “shifts counts of greater than 31 are performed modulo 32” 따라서 mov eax, 1 shl eax, 89 결과는 0x200이 된다.
wcscpy wcscpy는 유니코드를 복사하는 함수.길이 체크를 하지 않아 BOF를 유발 할 수 있음. (ASCII를 옮기는 strcpy와 같은 취약성을 지님) ASCII는 한 문자를 표현할 때 1byte 사용.UNICODE는 한 문자를 표현할 때 2bytes 사용 ASCII파일을 옮길 때AAAA(41414141) -> AAAA(4100410041004100)유니코드로 확장하면서 exploit 할 때 걸림돌이 되는 00이 붙음. ==> 애초에 유니코드로 작성하여 로드할 수 있는 환경이라면 애초에 유니코드로 작성하는 게 편함.# -*- coding: cp949 -*-