- Page
- 문제 소스코드
FLAG는 flag.py 에 있다고 힌트가 있었음
/ping 에 들어가면
해당하는 Host로 Ping 테스트를 할수 있는 기능이 있음
Ping! 버튼을 눌러보면
리눅스의 셸에서 실행된 결과값이 사이트상에 렌더링되어 출력된다.
다시 한번 코드를 살며보면
host = request.form.get('host') cmd = f'ping -c 3 "{host}"'
이 쪽부분에서 host는 ping값을 보낼 host를 form태그상에서 불러오고 cmd는 미리 짜여진 명령어안에 host의 ip만 대입하여 실행시키는것을 확인할 수 있다.
POST 요청의 패킷을 한번 살펴보면
host=8.8.8.8 와 같은 요청으로 서버에 보내지는것을 확인
리눅스의 셸에서 다중 명령어를 사용할때는 ; (세미클론) 을 사용하여 앞과 뒤에 오는 명령어를 모두 실행시키는 의미를 담고있다.
ping 명령어를 실행 시킬때 ls 명령어도 같이 실행시켜서 사이트상에 렌더링되게
host=8.8.8.8; ls
라는 요청을 보내보았다.
위와 같은 오류가 발생하는것으로 확인
여기에서 오류가 발생한 원인은 쌍따옴표로 감싸져있어서 발생한것 쌍따옴표를 사용하여 ping 의 명령어에서 탈출하고 세미클론으로 다음에 올 명령어를 작성하여줬다.
host=8.8.8.8";”ls
ping 명령어 후에 ls 명령어 까지 실행된것을 확인 FLAG.py 가 /(루트) 상에 존재하는것을 확인
cat 명령어로 flag.py의 내용을 살펴보자.
실행오류가 발생하는것으로 확인된다
→ 자세히 알지는 못하지만 추측상 띄어쓰기나 제일 끝에 쌍따옴표때문인걸로 추측됨
제일 끝에 쌍따옴표로 닫히는 부분을 주석처리해 쌍따옴표를 없애보자
";cat flag.py #
→ 명령어 상 ping -c 3 “”; cat flag.py
";cat flag.py"
→ 명령어 상 ping -c 3 “”; cat flag.py ””
- Page
- 문제 소스코드
FLAG는 flag.py 에 있다고 힌트가 있었음
/ping 에 들어가면
해당하는 Host로 Ping 테스트를 할수 있는 기능이 있음
Ping! 버튼을 눌러보면
리눅스의 셸에서 실행된 결과값이 사이트상에 렌더링되어 출력된다.
다시 한번 코드를 살며보면
host = request.form.get('host') cmd = f'ping -c 3 "{host}"'
이 쪽부분에서 host는 ping값을 보낼 host를 form태그상에서 불러오고 cmd는 미리 짜여진 명령어안에 host의 ip만 대입하여 실행시키는것을 확인할 수 있다.
POST 요청의 패킷을 한번 살펴보면
host=8.8.8.8 와 같은 요청으로 서버에 보내지는것을 확인
리눅스의 셸에서 다중 명령어를 사용할때는 ; (세미클론) 을 사용하여 앞과 뒤에 오는 명령어를 모두 실행시키는 의미를 담고있다.
ping 명령어를 실행 시킬때 ls 명령어도 같이 실행시켜서 사이트상에 렌더링되게
host=8.8.8.8; ls
라는 요청을 보내보았다.
위와 같은 오류가 발생하는것으로 확인
여기에서 오류가 발생한 원인은 쌍따옴표로 감싸져있어서 발생한것 쌍따옴표를 사용하여 ping 의 명령어에서 탈출하고 세미클론으로 다음에 올 명령어를 작성하여줬다.
host=8.8.8.8";”ls
ping 명령어 후에 ls 명령어 까지 실행된것을 확인 FLAG.py 가 /(루트) 상에 존재하는것을 확인
cat 명령어로 flag.py의 내용을 살펴보자.
실행오류가 발생하는것으로 확인된다
→ 자세히 알지는 못하지만 추측상 띄어쓰기나 제일 끝에 쌍따옴표때문인걸로 추측됨
제일 끝에 쌍따옴표로 닫히는 부분을 주석처리해 쌍따옴표를 없애보자
";cat flag.py #
→ 명령어 상 ping -c 3 “”; cat flag.py
";cat flag.py"
→ 명령어 상 ping -c 3 “”; cat flag.py ””