본문 바로가기
CTF/ETC

[CTF] CCE2022 BabyWeb Write-Up | Web

by spareone 2026. 3. 10.

2022년 사이버공격방어대회 (CCE) BabyWeb Write Up 입니다.


[그림 1] 문제 메인 페이지

문제에 접속하면 텍스트박스와 제출 버튼이 보입니다.

[그림 2] 웹서버 코드 파일

해당 서버는 다음과 같은 파일로 구성되어 있습니다.

[그림 3] public/app.py 소스코드

먼저 public/app.py 입니다. 이 코드의 핵심은 try문 안에 있습니다.

48번째 라인을 return하는 것이 목적인 것으로 보입니다.

또한, flag.service를 필터링하는것으로 보아, 해당 인자를 필터링을 우회하여 전달해야 하는 것으로 보입니다.

[그림 4] internal/app.py 소스코드

Internal/app.py 소스코드 입니다. [그림 2.3]의 48번 함수 get()을 호출하면 실행되는 코드로 보입니다. 10번 라인에서, flag.service가 들어오면 FLAG를 return하도록 구성되어 있는 것을 확인할 수 있습니다.

8번 라인에서 URL이 /flag로 구성되어 있어서, 최종적으로 전달해야 할 인자는 http://flag.service/flag입니다.

[그림 5] 인자가 filtering되고 있는 모습

 그러나 그대로 전송하게 되면, 코드에서 확인한 것처럼 필터링에 걸립니다.

보통 CTF에서 문자열 필터링을 하게 되면, 특정 문자열과 특수문자들을 걸러내게 됩니다. 그러나 [그림 2.3]의 코드를 다시 확인해보면, 특수문자를 필터링하는 구문이 존재하지 않습니다. 따라서, URL에서 사용하는 URL Encoding 방식으로 인자를 전달하면 필터링 우회가 가능할 것으로 보입니다.

한 글자만 변환해도 우회가 가능합니다.

f는 %66이므로, http://%66lag.service/flag를 입력하면 됩니다.

[그림 6] flag가 출력된 모습

해당 문자열을 입력하면 flag가 출력됩니다.


'CTF > ETC' 카테고리의 다른 글

[CTF] CCE2022 reborn of php Write-Up | Web  (0) 2026.03.10

댓글