WEB/webhacking.kr (old)

webhacking.kr 45번

hongjw 2020. 3. 22. 17:13

challenge 45 첫화면

SQL Injection문제 진짜 많댜..( ˘・з・˘)

view-source php코드

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