뉴비에욤

Webhacking.kr 35번 본문

Webhacking.kr

Webhacking.kr 35번

초보에욤 2015. 8. 16. 14:15

 

GET 메소드로 전송되는 "phone" 파라미터 값에 필터링이 적용되어 있다.

그 다음에는 쿼리가 실행되는데, 각 변수의 의미는 아래와 같다.

- SESSION[id] = id 값

- SERVER[REMOTE_ADDR] = 클라이언트 공인 IP 값

- GET[phone] = 사용자가 입력한 값

 

내 환경상 아마 "VALUES ('wraith', '58.xx.xx.xx', 정수_입력값)" 쿼리가 실행될 것이다.

 

 

그리고 id 값이 "admin" 이면서 ip 값이 내 공인 IP와 동일한 컬럼이 존재하면 해당 결과에서 id 를

보여줄 것이다.

공인 IP는 바뀌지 않으니 쉽게 말하면 (SESSION[id]) 값이 "admin" 일 때만 클리어 된다는 소리다.

문제는 해당 값은 가입할 때 세팅되고 변경할 수 없다는 점이다.

 

결국 INSERT 쿼리에서 사용되는 GET[phone) 변수가 인젝션 포인트라는 소리다.

 

 

 

INSERT 쿼리에서는 VALUES 를 이용할 때 위 사진처럼 한번에 여러 개의 컬럼을 추가 할 수 있다.

 

 

phone 값을 위와 같이 입력하면 쿼리는 아래와 같이 실행된다. 


INSERT INTO challenge35_list(id,ip,phone)
VALUES ('wraith', '58.xx.xx.xx', 1), char(97,100,109,105,110), 0b0011010100111~~~~~, 2)

 

char(97,100,109,105,110) 함수 실행 결과는 "admin"을 의미하고, 굉장히 긴 이진수는 내 공인 IP를

의미한다.

'Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 37번  (0) 2015.08.16
Webhacking.kr 36번  (0) 2015.08.16
Webhacking.kr 34번  (0) 2015.08.16
Webhacking.kr 33번  (0) 2015.08.16
Webhacking.kr 32번  (0) 2015.08.16
Comments