본문 바로가기

4-1. 2025-2 심화 스터디/워게임 도장 깨기

[1주차] 25.09.27 워게임 도장 깨기

[Dreamhack] "bof" 문제풀이

일단 소스코드가 하나도 안 보이기 때문에 디컴파일을 해야함. ida로 할 수 있음

main함수인데, 사실 144바이트를 입력받는다는거 말곤 잘 모르겠음. c코드로 보자

 

f5를 하면 c코드가 보임

v4를 128바이트만큼만 입력받는다는데, 아래에선 144바이트까지 입력받을 수 있게 둬버림. 

-> a를 128번 하고 뒤는 flag가 있는 주소를 붙여넣기 하면 될 것 같음.

 

 


[Dreamhack] devtools-sources

 

문제 파일 다운 받아서 압축 풀어주면

이런 파일들이 나옴

about.html 들어가서

개발자 도구 Sources 탭에서 dh를 검색해 봤더니 플래그가 나와 있음

 

 


 

[Dreamhack] Base64 based

문제 설명

 

웹페이지 / 문제 파일 내 index.php

index.php를 확인해보니 파일을 get으로 받아서 ../과 flag.php를 base64 인코딩 형태로 필터링 하는 것을 알 수 있었음.

 

 

문제 파일 중 hello.php가 있어 get방식으로 URL 뒤쪽에 추가해본 결과 :

/hello.php 추가
index.php?file=hello.php 추가 결과 및 index.php?file=aGVsbG8ucGhw 추가 결과

 

이를 통해 php를 넘겨주면 안의 내용을 출력해준다는 것을 알았고, 두 번째 시도에서 index.php의 파일 파라미터에 hello.php를 base64 인코딩한 형태로 넣어줘도 hello.php가 출력됨을 확인

index.php?file=인코딩된 파일 의 형식으로 넘겨줘야 함

index.php?file=ZmxhZy5waHA= 와 같이 flag.php로 넘겨주면 필터링에 걸려서 출력되지 x

 

stripos(대상 문자열, 조건 문자열, 검색 위치)

  • 대상 문자열을 앞에서부터 검색하여 조건 문자열의 위치를 반환하는 함수
  • 조건 문자열이 발견되지 않으면 false를 반환.
  • 대소문자 구별 x

조건 문자열을 검색하여 필터링 하는데, 사이에 다른 값을 넣어주면 될 것 같아 인코딩된 문자에 공백을 의미하는 %20을 문자 사이에 추가하여 플래그를 획득함.