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..
문제 페이지를 보면 메모와 파일을 업로드할 수 있는 것을 볼 수 있다. 위와 같이 메모와 함께 파일을 업로드해보면 아래와 같이 파일명이 3글자 이상 안된다는 것을 알 수 있다. 파일명을 123으로 해서 내용은 test 로 올려보면 아래와 같이 메모와 파일이 업로드되어 올라간 것을 볼 수 있다. 실제로 업로드된 파일에 접근해보면 내용이 null 로 변경이 되는 것을 알 수 있다. 삭제를 해보면 mode=del 과 time=1440951597 값이 전달이 되면서 메모와 업로드된 파일이 삭제되는 것을 확인할 수 있다. 구조는 알 수 없지만 파일명이 3글자로 제한되어 있다는 점과 삭제를 할 때 time 값을 토대로 데이터베이스에서 비교를 통해서 메모와 파일이 삭제되는 것이라 생각할 수 있다. 그리고 삭제를 할 ..