Web Security

KU-CTF PingService

junnybottle 2023. 3. 28. 16:02

KU-CTF PingService 문제 화면

해당 문제는 로컬파일을 도커에 올려 풀이를 진행하겠다.

 

해당 문제 소스부분이다.

 

/source 부분중에 해당 부분을 보면 ping을 보내는 시스템 명령어가 있는 것을 알 수 있다.

그리고 이 구문의 형식을 맞춰준다면 시스템 명령어는 정상적으로 실행 될거라고 예상할 수 있다.

 

하지만 ip값을 정상적으로 입력함에도 불구하고 정상적으로 실행되지 않았다.

 

/source를 다시보니 위 부분에서 명령어를 실행할 때, 띄어쓰기를 해야하는 것을 알 수 있었다.

만약 ip에 ls의 값을 준다면 시스템 명령어는 cd /app/mypinguser/"dir"+ && ping -c 2ls).read()식으로 전송하기 때문에 ls 명령어가 실행되지 않을 것이다. 그렇기에 띄어쓰기를 입력하기 위해 인코딩인 %20을 입력하고 ping 명령어를 실행해보겠다.

 

위와 같은 방법으로 입력하니 정상적으로 실행되는 것을 확인할 수 있었다.

 

이제 시스템 명령어 ls를 실행시키기 위해 띄어쓰기(%20)와 &(%26)을 이용해 명령어를 실행시켜보겠다.

정상적으로 ls가 실행된 것을 확인할 수 있었다.

필자는 여러 디렉토리 중 수상해보이는 secret 폴더를 보기로 했다.

입력해보니 flag가 있는 것을 확인했다.

flag에 들어가보려고 했더니 실행이 되지 않았다. 그래서 /(%2f)를 인코딩해서 실행시켜보려고 한다.

그리고 flag값을 보기위해 ls 명령어가 아닌 cat을 이용해 확인해보겠다.

flag값을 확인할 수 있었다.