CTF에서 포너블 문제의 형식을 보면 바이너리가 주어지고, 문제 서버가 보통 nc서버로 주어진다. 바이너리를 분석하여 nc 서버에 payload를 보내서 문제를 해결하는 방식이다. 서버에 접속하면 바이너리가 바로 실행되는 형태가 많다. 이와 같은 상태의 서버를 구축하기 위해 xinetd를 설치해야 한다. xinetd는 네트워크에서 들어오는 요청을 받아 그 요청에 적절한 서비스를 실행한다. 요청은 포트번호를 식별자로 사용하여 구분한다.
$ sudo apt-get install xinetd
설치가 다 되었으면 /etc/xinetd.d 경로에 서비스 이름으로 설정 파일을 만들어야 한다. 테스트용 서비스로 hello를 만들것 이기 때문에 hello 파일을 만들었다. hello 파일에 다음과 같은 내용을 작성한다.
마지막 줄 server에 서버에 접속했을 때 실행시킬 바이너리 파일의 경로를 적어주면 된다.
이후 /etc/services 파일의 하단 # Local services 아래에 실행시킬 서비스와 포트 번호를 추가해준다.
이후 지정한 포트 번호로 nc 접속하면 서비스가 제대로 동작함을 확인할 수 있다.
테스트용 바이너리의 소스코드는 다음과 같다.
#include <stdio.h>
int main()
{
printf("hello\n");
return 0;
}
'Project H4C Study Group' 카테고리의 다른 글
[Project H4C][pwnable.kr] random (0) | 2021.04.08 |
---|---|
[Project H4C][pwnable.kr] passcode (1) | 2021.04.06 |
[Project H4C][pwnable.kr] flag (0) | 2021.04.02 |
[Project H4C][pwnable.kr] bof (0) | 2021.04.01 |
[Project H4C][pwnable.kr] collision (0) | 2021.03.30 |