webhacking.kr 사이트의 8번 문제를 보면 다음과 같다.
할 수 있는 것이 없는 것 같으니 소스 페이지를 확인해보자.
주석으로 index.phps가 써져 있으니 해당 페이지로 들어가보면 다음과 같다.
소스를 분석해보자.
agent 변수에 HTTP_USER_AGENT의 값을 넣고 ip에 REMOTE_ADDR의 값을 넣는다.
agent에 저장된 문자열을 trim() 함수로 공백을 제거한다.
그리고 나서 . 과 / 를 _ 로 바꾼다.
pat 변수에 필터링할 문자들을 저장한다.
agent에 저장된 문자열을 소문자로 변경하고 if문에서 pat과 일치하는 것이 있으면 Access Denied 를 출력하고 종료한다.
q는 sql 쿼리문이 들어 있다.
ck는 q의 결과 값이 들어 있다.
ck의 값이 admin이면 문제가 풀리는 것 같다.
ck의 값이 없으면 insert 문으로 db에 agent, ip, guest 로 저장한다.
위 insert 문을 이용해서 admin에 대한 값을 넣을 수 있을 것 같다.
이를 봤을 때 User-Agent를 이용해야 하는 것 같다.
User-Agent를 변경하기 위해 프록시를 살린다.
burpsuite를 실행하고 페이지를 다시 로드하면 패킷을 잡아낼 수 있는데, 해당 패킷의 User-Agent의 값을 다음과 같이 변경하여 전달한다.
Imp3rio', '1', 'admin'),('2
위와 같이 전달을 하게 되면 다음과 같은 데이터가 DB에 들어간다.
agent = Imp3rio
ip = 1
id = admin
이제 User-Agent 값을 다음과 같이 Imp3rio로 변경하여 전달한다.
그러면 8번 문제가 풀린다.
'Wargame > webhacking' 카테고리의 다른 글
[webhacking.kr] 11번 문제 (0) | 2017.05.04 |
---|---|
[webhacking.kr] 10번 문제 (0) | 2017.05.04 |
[webhacking.kr] 7번 문제 (0) | 2017.05.04 |
[webhacking.kr] 6번 문제 (0) | 2017.05.02 |
[webhacking.kr] 5번 문제 (0) | 2017.05.02 |