워게임/CTFlearn

[CTFlearn] Domain name resolver - 포너블 / Command Injection / IDA

SecurityMan 2023. 9. 9. 11:00

 

 

CTFlearn 에서 제공하는

 

Easy 난이도의 포너블 문제

 

반응형

 

문제에서는 원격으로 접속할 수 있는 주소와

 

문제 바이너리 파일이 주어진다.

 

설명을 보면 도메인과 IP와 관련된 문제인듯 하다.

 

 

문제에서는 task 라는 바이너리가 주어진다.

 

 

해당 바이너리를

 

IDA 라는 도구를 이용해 열어봤다.

 

F5를 눌러 메인함수의 수도코드를 보면

 

첫째로 사용자로부터 입력을 받는다.

 

입력받는 값은 도메인 네임이다.

 

다음으로 입력받은 값을 dig <도메인 네임> +short 형태로 명령어를 수행하고,

 

그 결과를 출력한다.

 

 

참고로 dig 명령어는 이렇게

 

도메인 이름을 입력하면 그 도메인의 아이피를 리턴해주는 명령어이다.

 

저 명령어를 그대로 task 바이너리를 이용해 수행하는 것이다.

 

 

실제로 원격으로 접속해 실행해보면

 

똑같은 결과가 리턴되는것을 확인할 수 있다.

 

문제는 사용자 입력값을 필터링 하지 않기 때문에

 

추가적인 명령어를 삽입해 실행할 수 있다는 것이다.

 

 

www.google.com;  ls -al ; 라고 입력을 하게 되면

 

dig www.google.com;  ls -al ; +short 가 되어

 

dig www.google.com  

 

ls -al

 

+short 가 각각의 명령어로 인식되어 실행되게 된다.

 

그렇기 때문에

 

+short 옵션이 적용되지 않은 dig 명령어 결과,

 

ls -al 명령어 실행 결과

 

+short 는 해당하는 명령어가 없어 오류메세지가 각각 출력되게 된다.

 

또한 ls -al 명령어 수행결과를 보면

 

flag.txt 파일이 있다는 것을 알 수 있다.

 

 

같은 방법으로

 

cat flag.txt 를 ; 사이에 넣으면

 

flag.txt 를 읽어와 플래그를 확인할 수 있게 된다.

반응형