728x90
반응형
8번문제에 들어갔더니 done! 이라는 문구를 제외하고는 볼 것이 없었다.
바로 view source로 이동했다.
무언가 코드가 잔뜩 나왔다.
간단히 정리해 보자면
- DB에 저장되어 있는 user-agent라면, 해당 user-agent에 맞는 id 값을 조회한다
- DB에 저장되어 있지 않는 user-agent라면, user-agent, client-ip, guest 순서대로 DB에 삽입한다
- 조회한 id값이 admin일 경우 문제가 풀린다
가장 중요한건 이부분이다.
문제를 풀려면 id가 admin인 값을 불러와야 하는데, 애초에 insert할때 id를 guest로 하드코딩 해두었다.
그렇다. 이 문제 역시 SQL Injection으로 쿼리를 조작해서 하드코딩 된 부분을 우회하여
id가 admin으로 insert 될 수 있도록 풀어야 하는 문제이다.
풀이 방법은 매우 간단하다.
php 코드에 나와있듯이, insert는 user-agent, ip, id 순으로 삽입된다.
여기서 우리가 변조할 수 있는 부분은 user-agent이기 때문에,
user-agent를 testtest', '127.0.0.1','admin')-- a 이런식으로 변조함으로써 임의의 데이터를 삽입하고,
하드코딩된 데이터는 주석처리 시켜버리는 방식으로 injection을 시도하면 된다.
이렇게 변조하여 request를 보내게 되면 done! 이라는 문자열이 보인다.
즉 insert가 잘 이루어졌다는 말이다.
insert가 잘 이루어 졌다면 user-agent가 testtest인 사람의 id는 admin이 될 것이다.
Injection이 잘 되었나, user agent를 testtest로 변조한 뒤 request를 보내보았다.
끄읕
정상적으로 admin이 불러와짐을 확인할 수 있다.
728x90
반응형
'Webhacking > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-10번 문제 풀이 (0) | 2021.01.08 |
---|---|
[Webhacking.kr] old-09번 문제 풀이 (0) | 2021.01.08 |
[Webhacking.kr] old-07번 문제 풀이 (0) | 2021.01.03 |
[Webhacking.kr] old-04번 문제 풀이 (0) | 2021.01.03 |
[Webhacking.kr] old-06번 문제 풀이 (0) | 2021.01.02 |