8번 문제를 풀어보자.
해당 문제의 점수는 350point이다.
실제로 해당 문제를 눌러보자.
따로 얻을 수 있는 정보는 없으니
해당 페이지의 소스코드를 확인해보자.
<!--
index.phps
-->
해당 소스코드에 대한 힌트가 있으니
확인해보자.
다음과 같은 소스코드가있다.
대충 봤을 때 $ck[0] 변수가 "admin"이 될 경우 해당 문제가 풀리는 것으로 생각된다.
구체적으로 소스코드를 분석해보자.
해당 소스코드가 분석이 완료되었으니
문제해결 전략을 구상해보자.
처음에 "select id from lv0 where agent = '$_SERVER[HTTP_USER_AGENT]'"라는 쿼리를 날린다.
허나 해당 쿼리가 올바르게 실행되지 않을 것이다.
HTTP_USER_AGENT에 들어간 변수값이 정상적인 쿼리가 아니기 때문이다.
해당 이유로
$ck의 변수값이 존재하지 않을 것이다.
그러한 이유로
다음의 조건문을 만족하여
해당 쿼리문이 실행된다.
그렇다면 우리는 해당 쿼리를 SQL Injection을 통해 조작하여
id가 'admin'으로 하는 새로운 agent를 삽입하면 되는 것이다.
한번 생각해보자.
해당 테이블의 컬럼인 ip와 id는 고정된 값이므로 수정할 수 없으나,
$agent를 수정하여 위의 목적을 달성하면 되는 것이다.
INSERT INTO lv0(agent,ip,id) VALUES('$agent','$ip','guest')
$agent = "agent1', 'ip1', 'id1'), ('agent2" 다음과 같이
$agent의 변수값에 agent1', 'ip1', 'id1'), ('agent2 해당 값을 대입해보자.
INSERT INTO lv0(agent,ip,id) VALUES('agent1', 'ip1', 'id1'), ('agent2','$ip','guest')
이렇게 해당 쿼리를 조작하여, 해당 테이블에 원하는 데이터를 집어넣을 수 있다.
실제로 HTTP_USER_AGENT에 무슨 값이 들어가있는지 확인해보자.
User-Agent값에 크롬 브라우저에 대한 정보가 들어가있다.
이제 해당 정보를 수정하면
다음과 같은 메세지를 띄운다.
이제 실제로 새로고침을 한후
User-Agent에 lidron을 대입해보자.
Congratulation 메세지박스를 찍지 못하였다.
완료
'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글
webhacking.kr [문제 10번] (0) | 2018.03.06 |
---|---|
webhacking.kr [문제 9번] (0) | 2018.03.04 |
webhacking.kr [문제 7번] (0) | 2018.02.25 |
webhacking.kr [문제 6번] (0) | 2018.02.24 |
webhacking.kr [문제 5번] (0) | 2018.02.23 |