PentesterLab의 Code Execution 02 문제에 대한 접근 방법을 기록
아래와 같이 이번 문제는 특정 테이블에 컬럼명을 이용하여 정렬할 수 있는 기능이 있는 페이지이다.
이전 문제와 비슷하게 싱글/더블 쿼터를 입력했더니 묵직한 에러가 출력된다. 에러 내용을 보면 usort 함수에서 syntax가 맞지않아 발생된 에러이다.
usort 함수는 함수명 그대로 정렬함수이다. 중요한점은 2번째 인자로 들어가는 정렬 구문에 콜백이 허용된다는것이다.
콜백 = 코드 🙌🏻
먼저 id를 통해 정렬할 경우 사용되는 코드 예시는 아래와 같을 것이다.
ushor($ids, "특정함수명");
여기서는 order 파라미터로 전달되는 값이 usort함수의 두번째 인자인 콜백 내 특정 값으로 들어갈것을 예상하고 syntax를 알맞게 구성하여 두번째 인자로 들어갈 콜백부분에 코드를 삽입할 수 있다. (콜백의 뒷구문은 주석으로 날려버렸다)
??order=id);}system("id");//