Webhacking.kr
Webhacking.kr 39번
초보에욤
2015. 8. 16. 14:47
(\) 문자를 지운다.
(') 문자를 ('') 으로 치환한다.
substr 함수를 통해 15번째 글자까지 자른다.
문제가 발생하는 부분은 쿼리 부분이다. 잘 보면 ("select ~~~ id='$_POST[id]") 로 작성되어 있다.
끝 부분에 싱글 쿼테이션이 하나 빠져 있어서 무조건 오류가 난다.
오류가 난다고 입력 부분에 (')을 입력해 버리면 str_replace 함수 때문에 ('') 로 변경되서 똑같이
오류가 난다.
핵심은 바로 substr 함수를 통해 15번째 글자까지 자른다는 것이다.
" admin(공백 9개)' " 를 입력한다.
입력값 |
입력값 길이 |
치환값 |
치환값 길이 |
admin(공백 8개)' |
14글자 |
admin(공백 8개)'' |
15글자 |
admin(공백 9개)' |
15글자 |
admin(공백 9개)'' |
16글자 |
치환된 길이가 15글자이면 싱글 쿼테이션 2개가 그대로 입력된다.
- "SELECT 'good' FROM zmail_member where id='$_POST[id]";
- 오류 발생
그런데 치환된 길이가 16글자이면 substr 함수에서 15글자까지만 입력 받기 떄문에 끝에
싱글 쿼테이션이 1개가 잘린다.
- "SELECT 'good' FROM zmail_member where id='$_POST[id]'";
- 오류 발생하지 않음