[ webhacking.kr ] old-08
포스트
취소

[ webhacking.kr ] old-08

image-20230706132425735

문제를 들어가면 hi guest를 볼 수 있다. 일단 소스코드를 확인해보자.


image-20230706132522254

  1. DB에서 agent가 현재 HTTP_USER_AGENT랑 일치하는 id를 가져오고 있다.
  2. id가 admin이면 문제를 풀 수 있다.
  3. id가 없다면 insert구문을 통해 id를 생성하게 된다.


따라서 HTTP_USER_AGENT를 조작하면 sql injection을 할 수 있고, admin 계정을 생성 한 뒤 admin계정으로 로그인 하면 된다.


$ch==false 일 때 다음과 같은 쿼리문이 사용된다.

insert into chall8(agent,ip,id) values('{$agent}','{$ip}','guest')


여기서 $agent에 a','1.1.1.1','admin'),('b 을 넣어주면 다음과 같은 쿼리문이 완성된다.

insert into chall8(agent,ip,id) values('<span style=color:#ff0000>aaaa','1.1.1.1','admin'),('b</span>','{$ip}','guest')


결국 DB에 (‘aaaa’,’1.1.1.1’,’admin’), (‘b’,’{$ip}’,’guest’) 이렇게 두 개의 값이 들어가게 된다.


이제 HTTP_USER_AGENT를 조작하기 위해 burp suite를 사용해야 한다.


image-20230706153732454

image-20230706153833142

burp suite에서 User-Agent부분을 위의 그림처럼 수정해주면 된다. 그러면 agent가 aaaa인 admin계정을 생성할 수 있다.

이제 다시 burp suite를 이용해서 agent가 aaaa인 계정으로 접속하면 문제를 풀 수 있다.


image-20230706154055132

image-20230706154106279