45번 문제에요.
배점은 550점, 분야는 DB에요.
SQL Injection 을 하래요.
그냥 바로 엔터를 눌러보면
hi guest
가 뜨네요.
소스보기를 눌러보면
admin select limit pw = < >
를 사용할수 없고, pw 는 md5() 를 통해 해시로 바껴버리네요.
그러니 인잭션 포인트는 id 인데...
여기서 주목해야 할부분은
addslashes()
와
mb_convert_encoding()
이에요.
addslashes() 함수는 ' 와 " 앞에 \ 를 붙여주는 함수이고,
mb_convert_encoding() 함수는 문자열의 인코딩을 바꿔주는 함수인데
mb_convert_encoding 때문에 문자열이 멀티바이트 환경으로 바껴버리고
멀티바이트 환경에서 \ 앞에 0xa1 ~ 0xfe 가 들어와버리면
인코딩이 깨지면서 하나의 문자로 취급하게되요.
그러니 %aa%27 을 사용해서 ' 를 닫아주고
= 를 사용할수 없으니 like 를,
'를 쓸수 없으니 16진수로 우회해서
select id from chall45 where id=꩜' or id like 0x61646d696e#' and pw=md5('guest')
가 되도록 해주면?
빠밤!
문제가 풀렸네요.
'연구글 > webhacking.kr' 카테고리의 다른 글
webhacking.kr Challenge(old) 47 / Command (0) | 2020.08.24 |
---|---|
webhacking.kr Challenge(old) 46 / DB (0) | 2020.08.24 |
webhacking.kr Challenge(old) 44 / Command (0) | 2020.08.24 |
webhacking.kr Challenge(old) 43 / Server (0) | 2020.08.24 |
webhacking.kr Challenge(old) 42 / Server (0) | 2020.08.24 |