목록WarGame_WriteUp/Webhacking.kr (2)
starting point
초기화면은 입력창과 제출 버튼이 있고, 대놓고 SQL Injection임을 보여준다. 그럼 바로 소스코드를 살펴보겠다. [사진2]를 살펴보면 no라는 이름으로 text값이 GET방식으로 전달되는 것을 확인할 수 있다. [사진3]을 살펴보면 preg_match를 통해서 특정 문자를 필터링한다. #, select, (, 공백, limit, =, 0x를 대소문자 구분 없이 필터링한다. 문제를 해결하기 위해서는 쿼리문의 결과로 나온 id값이 'admin'이면 해결된다. 수월한 문제 해결을 위해서 admin의 no값이 2라는 것을 알려준다. 그럼 위의 쿼리문을 통해 원하는 결과를 얻어내기 위해 쿼리문을 조작해보겠다. [사진4]를 통해서 guest값이 있는 레코드의 no=1 임을 알 수 있다. 위에서 알아낸 정보를..
입력창과 제출 버튼이 있는 초기화면이다. 우선 개발자 도구를 통해서 html소스를 살펴보겠다. post방식으로 문자를 전송하고 입력할 수 있는 문자열의 최대길이는 15로 제한한 것을 확인할 수 있다. 다음으로 view-source를 통해서 소스코드를 살펴보겠다. 입력된 문자열은 str_replace()함수와 substr()함수를 통해서 필터링된다. str_replace()함수부터 살펴보겠다. str_replace()함수는 특정 문자를 다른 문자로 대체하는 함수이다. 위 코드에서는 \(역슬래시)는 "(없음)"으로 대체하고, '(싱글쿼터)는 ''(싱글쿼터 2개)로 대체한다. substr()함수를 살펴보겠다. substr()함수는 선택된 문자열을 원하는 부분만 자르는 함수이다. 위 코드에서는 post방식으로 ..