Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

cdor1's lab

Webhacking.kr 50번 본문

Security/Web

Webhacking.kr 50번

Cdor1 2017. 4. 5. 11:29

450점이나 주는데 sql injection이라고 해서 얼마나 어려울까 무서웠다..


id값을 mb_convert_encoding이라는 함수를 이용해서 건드는데

인코딩 할 때 사용되는 함수라고 한다.

이 소스에서는 euc-kr인코딩에서 utf-8인코딩으로 바꿔주고 있는데 여기선 크나큰 취약점이 발생한다.

php에선 magic_quotes_gpc 설정을 세팅해 ', ", /, %00이 들어가게 되면 /와 함께 붙게 되어 injection을 방어하는데

멀티바이트를 사용하는 언어셋 환경에서는 함수가 백슬래쉬 앞에 %a1~%fe의 값이 들어오게 되면

%a1\이 한 개의 문자로 취급해서 인코딩해 백슬래쉬를 먹어버리게 된다.

여기서 생기는 취약점으로 '(싱글쿼터)를 주입할 수 있게 할 수 있다.

select lv from members where id='$_GET[id]' and pw=md5('$_GET[pw]')

에서 pw를 md5로 인코딩 하는 부분을 주석처리하여 id와 pw가 이어지게 해 sql injection을 하려고 한다.

 select lv from members where id='%a1'/*' and pw=md5('*/union select 3 #')

또한 id값에서만 union을 필터링하고 pw값에서는 union을 필터링 하지 않기 때문에 pw에 넣어 사용할 수 있다.

id = %a1'/*

pw = */union select 3#

똑같이 공백을 필터링하니 %0a(라인피드)를 넣어 우회하도록 하자.

'Security > Web' 카테고리의 다른 글

Webhacking.kr 49번  (0) 2017.04.07
Webhacking.kr 28번  (0) 2017.04.06
Webhacking.kr 21번  (0) 2017.04.04
urllib2 request  (0) 2017.04.03
Webhacking.kr 25번  (0) 2017.04.03
Comments