ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-08
    Wargame/Webhacking.kr 2021. 11. 16. 16:40

    old-08

    "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
Designed by Tistory.