본문 바로가기
Web/Webhacking.kr

Webhacking.kr Challenge old-8 문제 풀이

by jh117jh 2024. 3. 19.
728x90

 

이번 문제는 id를 출력해주고 있다.

코드를 보면 

 

agent라는 변수에 HTTP_USER_AGENT라는 전역변수 값을 넣어주고 ip변수에는 REMOTE_ADDR라는 전역변수 값을 넣어준다.

REMOTE_ADDR은 많이 다뤄봤듯이 ip의 정보를 담고 있는 변수고 HTTP_USER_AGENT는 User-Agent헤더값을 담고 있는 변수다.

 

HTTP_USER_AGENT값을 통해 id를 검색하고 id가 admin일 경우 문제가 풀린다.

또한 id반환값이 없을땐 agent와 ip변수를 이용해 guest라는 id로 컬럼을 추가해 주고 저장된 id값이 70개가 넘으면 전부 삭제하고 다시 저장한다.

 

 

취약점이 발생하는 부분은 자연스럽게 컬럼을 추가하는 부분에서 일어날 것이라 예상되고 agent와 ip변수 중 우리가 변경할 수 있는 변수는 agent 변수이므로 agent변수 쪽을 공략해 보자.

 

https://jh-hack.tistory.com/61

 

Webhacking.kr Challenge old-59 문제 풀이

이번에 풀 문제는 59번! 들어가면 회원가입과 로그인 칸이 있고 id와 phone을 입력하게 되어 있다. 소스코드는 꽤 길긴 하지만 정리하면 POST[lid] = 로그인 id, POST[lphone]= 로그인 phone addslashes함수로 각

jh-hack.tistory.com

해당 문제는 59번 문제와 비슷한 유형과 난이도로 참고하면 좋을 것 같다.

 

 

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

이러한 쿼리문에서 agent값을 abc','2','admin'),('bcd 를 넣으면 

 

insert into chall8(agent,ip,id) values('abc','2','admin'),('bcd','{$ip}','guest') 

이런 형태로 2개의 컬럼이 추가되는 형태로 작성되는 걸 볼 수 있다.

 

 

User-Agent 헤더변수에 abc','2','admin'),('bcd를 넣고 컬럼을 추가해 준 뒤 

 

abc로 다시 보내면 

 

 

문제가 풀린다.

728x90