Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

White Security

PingService 문제풀이 본문

CTF Writups

PingService 문제풀이

POSIX 2019. 3. 30. 22:53

 

b00t2root 2019 web 3번

RCE 문제입니다.

 

 

접속하면 위와 같은 메시지를 보실 수 있는데

로컬에서 보낸 패킷이라고 여기게 하면 됩니다.

 

X-Forwarded-For 헤더를 변조하여 해결하였는데요.

이는 프록시를 통해 통신할 경우에 사용되는 헤더로

실제 통신하는 프록시 서버에서는 연결자의 IP를

위 헤더에 첨가해 호스트로부터 응답자를

식별할 수 있도록 하는 역할을 합니다.

 

 

따라서 127.0.0.1로 설정해주고

다시 패킷을 전송해 봅니다.

 

 

페이지와 그 소스가 출력되는데 상단에 ping을 보내어

응답을 확인할 수 있도록 하는 폼이 보입니다.

 

 

서버가 존재하지 않는 IP를 입력해 테스트해 보면

Not Alive 문자열이 나타나는 것을 볼 수 있습니다.

 

 

정확하게는 shell_exec를 통해 실행된 명령 응답에서

100% packet loss 라는 문자열이 포함되어 있으면 Not Alive를

그렇지 않으면 Alive를 출력하는 구조인데요.

 

 

clean() 이라는 함수를 통하여

일차적으로 정규식 검증이 이루어지지만

%0a 뒤에 들어가는 내용에 대해서는

검사를 하지 않는다는 것을 확인하였습니다.

 

추가로 clean() 은 인자의 공백을 제거하는 역할도 하는데

스페이스 대신에 탭 문자를 넣음으로서 우회가 가능합니다.

 

 

따라서 서버의 포트를 열어두고

netcat으로 flag.php 파일의 내용을 전송하도록 하면

서버에서 수신이 가능했습니다.

 

 

'CTF Writups' 카테고리의 다른 글

TimeWarp 문제풀이  (0) 2019.03.31
eXquisite Scenery Sites 문제풀이  (9) 2019.03.30
Set Me Free 문제풀이  (0) 2019.03.30
Easy PHP 문제풀이  (0) 2019.03.30
neverlanctf 2019 - React to this writeup  (0) 2019.02.04
Comments