39번을 클릭하면 위와 같은 화면이 뜬다. view-source를 클릭하여 소스 코드를 보자.
SQL 문법이 있는 것으로 보아, SQL Injection 문제 같다.
입력창으로 받아온 id 값에 \\가 있으면 삭제하고, '는 ''로 치환한다.
그 다음 id 값의 0부터 15번째 자리 값까지 복사하여 저장한다.
SQL문을 보면
select 1 from member where length(id)<14 and id='{$_POST['id']}
로 마지막 싱글쿼터가 빠져있다.
싱글쿼터가 빠진 상태에서는 문장이 완성 되지 않기 때문에 싱글 쿼터를 넣어주어야 한다.
그런데 위에서 ' 를 ''로 치환한다.
이때 우리가 참고할 수 있는 것은 15번째 자리까지만 복사한다는 것이다.
만약 우리가 값을 입력할 때 값의 15번째 자리에 '를 넣으면
''로 치환되어도 두번째 싱글쿼터는 16번째 자리이기 때문에 복사되지 않을 것이다.
즉,
1(문제 해결을 위한 값) + 공백(13) + '
를 form 입력창에 입력하면
최종적으로 result[0]이 1이 되기 때문에 문제가 풀리게 된다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old 19번 문제 풀이 (0) | 2021.04.27 |
---|---|
Webhacking.kr old 54번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 38번 문제 풀이 (0) | 2021.04.10 |
Webhacking.kr old 26번 문제 풀이 (1) | 2021.04.10 |
Webhacking.kr old 24번 문제 풀이 (0) | 2021.04.10 |