los 12번입니다.
12번 문제는 substr, ascii, ' ,=문자가 필터링 되면 i속성이 적용되어있는 문제입니다. 이 문제도 비밀번호를 알아내야 하는데 제가 기존에 사용했던 코드의 쿼리문으로는 우회가 어려웠습니다. 그래서 비밀번호의 길이는 아래의 쿼리문으로 알아냈습니다.
?no=3 or id like "admin%" and length(pw) like "8%"
위처럼 입력하면 Hello admin이 출력되기 때문에 길이가 8인 것을 알 수 있습니다.
그리고 아래의 코드를 이용하여 비밀번호를 알아냈습니다.
위의 코드에서 사용한 쿼리문을 살펴보겠습니다. 먼저 no를 이용하였고, mid 함수를 이용해 한 자리씩 brute forcing을 진행합니다. brute forcing 과정은 다음과 같습니다. j반복문에서 문자를 바꿔가면서 비밀번호를 비교해보는데 이때 비밀번호 첫 번째 자리부터 일치하는 문자가 있으면 멈추는 형식입니다.
답 : ?pw=0b70ea1f