문제 페이지에 나와있는 대로 id와 pw 값을 guset로 제출을 하면 level : 1 이라는 정보를 출력한다. 더 많은 정보를 얻기 위해서 소스를 보면 index.phps 소스 파일이 주어져 있는 것을 볼 수 있다. index.phps 소스 파일을 보면 Challenge 45 문제와 동일하게 mb_convert_encoding() 함수를 사용하고 있는 것을 볼 수 있다. select lv from members where id='$_GET[id]' and pw=md5('$_GET[pw]') 입력할 수 있는 두 개의 값 id, pw 중에서 id에 대해서만 mb_convert_encoding() 함수를 사용하고 있기 때문에 멀티바이트를 이용하여 '(single-quote)를 닫아주고 /* 주석을 열어준다..
SQL INJECTION 문제 소스를 보면 index.phps 소스 파일이 주어져 있다. 소스 파일을 보면 GET[lv]로 입력되는 값 중에 union,select,or,and 등을 입력하면 종료가 된다.따라서 소스 파일에 나와있는 문자를 제외하고 조건으로 id=admin을 만들어주면 된다. Query를 보면 single quote가 없기 때문에 hex(0x61646d696e)를 이용하여 admin을 만들어주고 or 대신에 || 를 이용해서 우회해주면 문제를 풀 수 있다. ?lv=1을 입력할 경우 zzibong이 발생하고 ?lv=2를 입력하면 아무런 값도 발생하지 않는다.따라서, ?lv=2||id=0x61646d696e 를 입력하면 문제를 우회하여 풀 수 있다.
PHP Object Injection PHP magic methodsPHP 클래스에는 magic functions라 불리는 특별한 메소드가 있다.magic functions은 이름을 보면 '__' 으로 시작하는 특징이 있다.__construct(), __destruct(), __toString(), __sleep(), __wakeup(), ... __construct()클래스의 생성자새로운 Object가 생성될 때마다 메소드 호출 __destruct()클래스의 소멸자PHP Script가 끝나면 무작위로 메소드 호출특정 Object 모든 참조가 삭제된 직후 또는 Object가 명시적으로 파기된 후 메소드 호출 construct_destruct.php:Colored by Color Scriptercs __t..