SQL Injection문제 진짜 많댜..( ˘・з・˘)
mb_convert_encoding(문자열, 바꿀 인코딩, 현재 인코딩) : 문자인코딩을 바꿔주는 함수
GET방식으로 id와 pw를 받는데, 만약 admin,select, limit, pw, =, <, >가 포함되어있으면 필터링된다.
$_GET['id']와 $_GET['pw']는 select문에 삽입되는데, $_GET['pw']는 md5로 인코딩되어 들어간다.
그리고, select문 출력값의 id가 admin이면 문제가 해결된다 !
여기서 주목해야할 점은 mb_convert_ecoding함수에서 $_GET['id']의 문자인코딩을 'utf-8'로 바꿔주는 것과 addslashes함수이다. 멀티바이트를 사용하는 환경에서 백슬래쉬 앞에 %a1~%fe의 값이 있으면, 백슬래쉬와 합쳐져 하나의 문자로 해석하게 된다. 따라서, SQL Injection방어를 위한 백슬래쉬가 사라져 작은따옴표(')를 입력할 수 있게 된다.
id에 %a1' or id='admin'# 를 입력하면 될 것같지만, admin과 =가 필터링되기 때문에 admin은 16진수로 바꿔서 0x61646D696E로 입력하고, =는 like로 우회해서 입력해야한다.
입력폼 id에 1%a1' or id like 0x61646D696E# 를 입력해서 제출하면, Wrong이 출력된다.
%가 %25로 바뀌기 때문이다. ( url : ?id=1%25a1%27+or+id+like+0x61646D696E%23&pw=guest )
따라서, url에 직접 ?id=1%a1%27 or id like 0x61646D696E%23&pw=guest 를 입력해주면 문제 해결 ~~!!~!
'WEB > webhacking.kr (old)' 카테고리의 다른 글
webhacking.kr 33번 (0) | 2020.04.04 |
---|---|
webhacking.kr 57번 (0) | 2020.03.29 |
webhacking.kr 30번 (1) | 2020.03.21 |
webhacking.kr 44번 (0) | 2020.03.19 |
webhacking.kr 40번 (0) | 2020.03.19 |