Luv{Flag}
article thumbnail
반응형

 

 

 

 

요즘 CTF 나 워게임에서 감사하게도 도커파일까지 주는 경우가 많다.

기왕받은 도커파일을 잘 활용하여 취약점 분석에 도움이 되기 위해 값을 직접 찍어본다던지, 중간중간 로그들을 출력하여 payload에 대한 값을 찍어보며 문제를 푸는경우가 많아졌다.

 

 

주어진 소스코드가 node.js 파일인 경우 console.log 로 간단하게 값을 출력하고

PHP인 경우 echo로 간단하게 변수값을 확인해 볼 수 있다.

그런데 python의 flask / fast api / Django 등 으로 빌드된  서버의 경우 print 로 값을 확인해 보려 하지만 뜻대로 도커에서 출력되지 않아 굉장히 답답했던 경험이 있다.

 

 

flush = True

간단한 해결방법은 print의 flush옵션을 true로 설정해 주는 것이다.

print(f"log: {value1}, {value2}", flush=True)

 

flush값을 True로 설정하여 강제로 flush해 주는 것이다.

 

 

python -u 옵션

도커파일 자체를 수정하여 파이썬을 실행할때 -u 옵션을 주어 실행하는 방법도 있다.

 

변경전

CMD ["python", "app.py"]

 

 

변경후

CMD ["python", "-u", "app.py"]

 

 

파이썬의 -u 옵션은 표준 출력 및 표준 오류 스트림을 버퍼링 없이 다루기 위해 사용한다.

 

반응형

검색 태그

loading