튜기's blogggg

LOB xavius -> death_knight

by St1tch


코드를 보면 6666포트를 열어 대기하고 있다가 클라이언트가 접속을 하면 

클라이언트가 보낸 256바이트의 데이터를 크기가 40인 buf에  넣으면서 bof가 발생할 수 있다.


일단 어떤 프로그램으로 컴파일 시켜 실행시키고 있는지 확인하기 위해 netstat으로 6666포트를 사용하고 있는 프로세스를 보았으나 권한이 없어 보지 못했다.

이제 방법은 리버스쉘을 이용하는건데

리버스쉘은 간단하게 얘기해서 공격대상 서버의 쉘을 공격자의 ip, 포트에 연결을 한다고 생각하면 된다.


네트워크를 통해 공격을 해야하므로, 일반 쉘코드를 이용을 하면 쉘을 따더라도 그 연결을 지속해줄수가 없다.

따라서 쉘을 따서 그 연결을 외부로 돌려주는 쉘코드가 필요하다.


리버스쉘에 필요한 쉘코드는 메타스플로잇을 이용하면 쉽게 만들 수 있다.



위와 같은 과정을 msfconsole를 실행시켜 위와 같은 과정을 거치면 쉘코드가 만들어 진다.

간단하게 말하면 쉘을 획득해서 LHOST의 LPORT로 연결을 시켜준다.


여기서 중요한점은 공격자가 터미널을 한개 더 키고 "nc -lvp port번호" 명령어를 이용해서 연결을 대기하고 있어야한다.

대기하고 있다가 리버스쉘이 따지면 해당 연결이 이어지게 된다.




LOB초반에 나오는 문제와 똑같은 문제와 비교했을 때, 쉘코드가 다르고, 다른 터미널에서 쉘이 따진다는거 말고는 별로 다른게없다.

payload의 구조는 dummy(44byte) + ret(브루트포싱) + nopslide(113byte) + shellcode(95byte)이다.

그냥 ret를 브루트포싱하여 nopslide를 태우는 코드이다.




nc -lvp 6767명령어를 이용해 대기중인 다른터미널에 쉘이 따졌다.




심심할때마다 한개씩 풀고 풀이를 썼는데,   올클리어 했다.



블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기