해당 문제는 로컬파일을 도커에 올려 풀이를 진행하겠다.
해당 문제 소스부분이다.
/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값을 확인할 수 있었다.
'Web Security' 카테고리의 다른 글
KU-CTF ForceLogin1 (0) | 2023.05.02 |
---|---|
KU-CTF ForceLength (0) | 2023.03.28 |
KU-CTF newapi (0) | 2023.03.26 |
Linux Wildcard란? (0) | 2023.03.21 |
OS Injection란? (0) | 2023.03.20 |