문제의 소스 코드입니다.
admin의 pw 값을 전송하면 문제가 해결됩니다.
pw에 대한 필터링을 보면 ' 문자는 사용할 수 없으므로 pw에 임의의 값을 넣을 수 없습니다.
따라서 no에 sql 쿼리 문을 넣어주어야 합니다.
substr 문자를 필터링하므로 mid 함수를 사용해줍니다.
또한 ' 문자를 사용할 수 없어서 like로 값을 유추할 수 없고
ascii 값으로 비교를 해줘야 합니다.
ascii 문자를 필터링하므로 ord함수를 사용해줍니다.
먼저 전에 있던 문제에서 admin의 no 값이 2였으므로 이번에도 2를 넣어봅니다.
= 문자를 사용할 수 없으므로 no<3 and no>1을 넣어줍니다.
(guest의 no에는 임의의 값 대입)
Hello admin이 나왔습니다.
이제 뒤에 and 조건으로 pw를 구하기 위한 쿼리 문을 넣어주면 됩니다.
이전 blind sql 문제에서 했던 방식으로 pw의 길이를 구해준 뒤
한 문자씩 가져와서 크기 비교를 해줍니다
(n번째 문자 < ascii 값(숫자))
같이지는 순간 Hello admin이 나오지 않을 것이므로 해당 값이 pw 값 입니다.
이 과정을 pw의 길이만큼 진행해줍니다.
(ord 함수는 ascii 함수처럼 문자의 ascii 값을 가져옴)
실행 결과 pw 값을 알게 되었습니다.
해당 값을 url로 전송해주면
문제가 풀립니다.
'write-up(web) > LOS' 카테고리의 다른 글
[Lord of SQLInjection] giant write-up (0) | 2022.07.31 |
---|---|
[Lord of SQLInjection] bugbear write-up (0) | 2022.07.31 |
[Lord of SQLInjection] golem write-up (0) | 2022.07.30 |
[Lord of SQLInjection] skeleton write-up (0) | 2022.07.30 |
[Lord of SQLInjection] vampire write-up (0) | 2022.07.30 |