문제 설명
웹해킹 문제 링크 들어가면 아래와 같이 나온다.
내 메모를 업로드하라길래 Upload My memo 들어가 보니
Filename과 Content 입력한 뒤 업로드가 가능한 창이 뜬다.
파이썬 쉘(IDLE)에서 ctrl+O 해서 문제 파일인 app.py를 열어 보니 이런 소스코드가 나왔다.
사실 이쯤에서 역대급으로 막막했다...
이것저것 구글링을 해 보니 일단 임의로 아무 파일이나 업로드해야 하는 것 같아서 해 보았다.
업로드 버튼을 클릭하면
이렇게 내가 업로드한 파일을 확인할 수 있다.
클릭해서 들어가면 내가 입력한 Content의 내용도 보인다.
이 아래부터는 전적으로 다른 사람들의 풀이에 의존한 내용이다.
문제 코드를 다시 확인해 보면,
이렇게 upload 부분에서는
if filename.find('..') != -1:
return render_template('upload_result.html', data='bad characters,,')
find 명령어를 이용해 상위 디렉토리 이동 명령어인 '..'을 탐지한다.
'..'이 탐지되면 'bad characters,,'을 출력한다. 어쨌든 ..을 포함한 파일을 업로드하지 말라는 거인 듯.
새로운 파일의 이름을 ../flag.py로 하여 업로드 했더니 역시나 'bad characters,,' 라고 뜬다.
그러나 read 부분에서는 '..'을 탐지하지 않는다.
read가 도대체 어디에 있는 거지... 싶어서 막막했는데 문제 URL을 보니까
찾았다
저 URL 뒷부분을
read?name=../flag.py로 수정했더니
찾았다
끝!
지금까지 푼 것 중엔 제일 어려웠던 것 같다
'SWUFORCE > 워게임 풀이' 카테고리의 다른 글
[Dreamhack] Flying Chars (0) | 2024.04.02 |
---|---|
[Dreamhack] ex-reg-ex(web) (0) | 2024.04.02 |
[Dreamhack] cookie(web) (1) | 2024.03.26 |
[Dreamhack] 64se64 문제 풀이 (0) | 2024.03.19 |
[Dreamhack] baby-linux 문제 풀이 (0) | 2024.03.19 |