본문 바로가기

Web Hacking/Webhacking.kr

[Webhacking.kr] old-8 write up

 

 

문제 접속하면 hi guest가 나온다. 코드를 보면

 

 

접속 사용자의 user_agent값을 가져와서 from가 있는지 확인한다. 그 후 서버 DB의 id의 개수를 가져오며 70개 이상일 경우 DB 데이터를 지운다.

 

db의 agent가 접속자의 user_agent와 같은 id를 조회하고 id값이 있으면 echo해주고 admin일 경우 문제가 해결된다.

 

반대로 조회된 id가 없을 경우 insert 구문으로 DB에 agent, ip, 'guest'를 삽입한다.

 

먼저 패킷을 잡아 user_agent값을 admin으로 변조해봤다. 

패킷 변조

 

 

👆 위와같이 insert 문이 제대로 삽입 후 done!이라는 문자열이 나온다.

 

변조할수 있는 부분은 user_agent 부분이므로 이걸 이용해 해결해야하는 것 같다. user_agent가 사용되는 부분은 

 

id값을 조회하는 부분과, 

 

insert 문으로 db에 데이터를 삽입하는 부분이다. 우선 첫 번째 경우에서 addslashes를 하기 때문에 조회구문에서 싱글쿼터 탈출은 불가능하다. 

 

다음은 두 번째 insert 부분이다. 이 경우엔 agent에 대해 별다른 필터링 구문이 없으므로 싱글쿼터 탈출이 가능해보인다. 굳이 하나 보면 위에서 from 문자열을 필터링하고 있다.

 

hello', '61.34.253.109', 'admin')#

 

위 문자열을 user-agent로 변조하여 보낼 경우 insert 구문에는

"insert into chall8(agent, ip, id) values('hello', '61.34.253.109', 'admin')#, '{$ip}', 'guest' )"

가 되기 때문에 뒤는 다 주석처리가 된다.

 

익스플로잇 👇

위와 같이 변조 후

 

insert문이 제대로 들어간 걸 확인 후

 

 

user-agent를 hello로 변조하여  패킷을 전송한다.

 

 

클리어

'Web Hacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-49 write up  (0) 2024.03.17
[Webhacking.kr] old-46 write up  (0) 2024.03.17
[Webhacking.kr] old-21 write up  (0) 2024.03.01
[Webhacking.kr] old-27 write up  (0) 2024.03.01
[Webhacking.kr] old-23 write up  (5) 2024.03.01