메인 페이지 화면 입니다.

음? 저는 게스트인가봐요 ~

view-source 를 클릭하여 전체 구조를 살펴보겠습니다.

음?? 이전보다 조금 복잡한 느낌이 듭니다...

위 소스를 토대로 전체적인 과정을 분석해 보았습니다.

[동작과정]

1. user-agent, IP 정보를 가져옴

2. user-agent에 "from"이 들어가면 "Access Denied!"가 뜸

3. id가 70개 이상이면 chall8 DB가 삭제됨

4. 서버에 저장된 user-agent를 정보를 조건으로 id를 가져옴

5. id가 admin이면 chall8 table 내용을 지우고 solve()함수 호출

6. 서버에 저장된 user-agent가 없으면 현재 user-agent정보, ip정보와 guest라는 id로 chall8테이블에 저장함 그리고 카운트를 1더함

여기서 가장 중요한 부분은 6번입니다.

insert into chall8 (agent, ip, id) values('($agent)', '($ip)', 'guest')") or die("query error");

DB에 쓰기작업이 가능한 쿼리이므로 프록시 툴을 이용하여 '$agent' 이 부분을 조작하여 'ip'와 'guest'부분을 우리가 원하는 형태로 바꿀 수 있습니다.

동작과정 중 4번을 보면 user-agent의 정보를 조건으로 id를 가져오므로 자신이 원하는 agent 정보를 입력하고 ip는 자신의 IP , 그리고 id에 해당되는 'guest'부분을 'admin'으로 바꾸어주면 됩니다.

저는 아래와 같이 설정해습니다.

$user-agent : admin

$ip : 192.168.6.133

guest : admin

아래는 버프를 이용하여 User-Agent를 조작한 화면입니다.

여기서 #을 붙인 이유는 "or die("query error");"부분을 주석처리하기 위함입니다.

이렇게 정보를 바꾸어서 쿼리를 하면 아래와 같은 화면이 보입니다.

저장되었다네요 ~

이제 4번동작 $agent를 조건으로 id를 검색하기 때문에 User-Agent를 admin으로 고쳐서 접속하면 되겠습니다.

과연!

성공했습니다!

이로써 챌린지8도 클리어!

 

'WAR GAME > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level10 (old)  (587) 2020.04.27
[webhacking.kr] Level9 (old)  (752) 2020.04.27
[webhacking.kr] Level7 (old)  (0) 2020.04.27
[webhacking.kr] Level6 (old)  (2) 2020.04.27
[webhacking.kr] Level5 (old)  (2) 2020.04.27

+ Recent posts