-
<Webhacking.kr> old-08Wargame/Webhacking.kr 2021. 11. 16. 16:40
"hi guest"라는 메시지와 view-source만을 볼 수 있는데, view-source를 통해 페이지 소스코드를 살펴볼 수 있다.
HTTP_USER_AGENT : 웹 사이트를 접속한 컴퓨터의 웹 브라우저 정보
$_SERVER['REMOTE_ADDR'] : 사이트 접속한 사용자 IP
$ck는 "select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"); 쿼리의 결과를 배열로 가져온다. $ck[0]이 'admin'이면 문제를 해결할 수 있다.
아래 부분의 쿼리를 통해 테이블의 구조를 알 수 있다.
chall8(agent, ip, id) 형태를 확인할 수 있는데,
우선 지금 형태는
agent ip id {$agent} {$ip} guest id가 'guest'로 고정적으로 입력된다.
id의 값을 'admin'으로 만들기 위해
agent ip id woong 1 admin 문자열 {$ip} guest 으로 만들면 된다.
insert into chall8(agent, ip, id) values('
{$agent}
', ${ip}, 'guest') 에서 우리가 조작할 수 있는 부분은 $agent 부분이다.
따라서, insert into chall8(agent, ip, id) values('woong', '1', 'admin'), ('guest_agent', ${ip}, 'guest')로 만들어 주면 'admin'의 agent는 'woong'이 된다.
위 방법에서 $agent인 HTTP_USER_AGENT는 패킷 안에 있으므로 Burp Suite를 사용하여 변경할 수 있다.
빨간 줄 부분이 HTTP_USER_AGENT에 해당하는 부분이다.
이 부분을 woong', '1', 'admin'), ('guest_agent로 바꿔준다.
그럼 테이블의 형태가
agent ip id woong 1 admin guest_agent {$ip} guest 와 같아지게 되고, 다시 USER_AGENT 값을 'woong'으로 주면 된다.
즉, select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"); 쿼리에서
id가 'admin'인 agent를 전달하면 되므로 woong을 전달하면
select id from chall8 where agent='woong';
$ck[0]의 값에 'admin'이 들어가게 되어 문제를 해결할 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
<Webhacking.kr> old-10 (0) 2021.11.23 <Webhacking.kr> old-09 (0) 2021.11.18 <Webhacking.kr> old-07 (0) 2021.11.15 <Webhacking.kr> old-05 (0) 2021.11.14 <Webhacking.kr> old-06 (0) 2021.11.11