BOF redhat 원정대 xavius -> death_night

BOF redhat 원정대 xavius -> death_night

death_night, death_night.c

코드를 보면 remote BOF라는 것을 알 수 있다. 소켓통신을 하기 위해서 소켓구조체들에 값을 넣어주고 bind, listen, accept를 거치는 기초적인 서버 코드이다.
클라이언트와 서버의 tcp연결이 맺어지면 fork로 자신과 같은 프로세스를 낳고 문자열을 보내고 recv에서 클라이언트의 입력을 대기하게 된다.
recv과정에서 40사이즈의 버퍼에 256을 받아오기 때문에 이를 이용해서 RET를 이동하게 할 수 있다.


6666포트로 클라이언트의 연결을 리슨하고 있는 것을 확인 할 수 있다.

페이로드는
[놉][RET][놉+쉘코드]
로 구성 하고 스택의 주소를 알 수 없기 때문에 0xbfff0000 ~ 0xbfffffff까지 주소를 브루트포싱해서  쉘을 얻을 것이고 쉘코드는 리버스쉘을 이용하여 포크된 자식프로세스가 내 컴퓨터에 접속하여 쉘을 넘기는 방법으로 공격을 할 것이다.
*쉘코드는 msfpayload를 사용하여 만들었다.


놉 개수와 메모리 증가 값을 적절히 수정하다 보면 공격에 성공하여 쉘을 얻을수 있다.

0 개의 댓글:

댓글 쓰기