728x90
문제 링크에 접속하면 아래와 같은 화면을 볼 수 있다.
우선, 문제 첫 화면에서는 추가적으로 알 수 있는 정보가 없어 '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번째 자리이기 때문에 복사되지 않을 것이다.
따라서, 입력 칸에 문제 해결을 위해 임의의 값인 숫자 '123'을 입력한 후 공백으로 11개를 채우고 마지막에 '를 입력해주었다.
입력 값을 제출하니 문제를 해결할 수 있었다!
728x90
'CTF' 카테고리의 다른 글
[Webhacking.kr] old-17 (0) | 2024.05.29 |
---|---|
[Dreamhack] out of money (0) | 2024.05.22 |
[Dreamhack] simple_sqli_chatgpt (0) | 2024.05.08 |
[Dreamhack] Addition calculator (0) | 2024.05.08 |
[CTFLearn] My Blog (0) | 2024.05.01 |