write-up(web)/LOS
[Lord of SQLInjection] blue_dragon write-up
ssongk
2022. 9. 17. 16:30

문제 화면입니다.
첫 번째 필터링에선 /prob _ . 을 필터링 합니다.
두 번째 필터링에선 ' \를 필터링 합니다.
여기서 중요한 건 필터링이 2개로 나뉘어져 있고
두 번째 필터링을 거치기 전 결과를 확인할 수 있기 때문에
싱글 쿼터를 사용할 수 있다는 점입니다.
이 때 time based injection을 사용할 수 있습니다.
sleep 함수와 if 문을 활용해 pw를 알아낼 수 있습니다.

익스 코드는 위와 같이 작성할 수 있습니다.
if 문의 조건이 참이면 sleep 함수가 실행됩니다.
파이썬에서 time 모듈의 elapsed.total_seconds() 메서드를 활용하면 해당 코드의 실행 시간을 알 수 있습니다.
아래 실행 결과를 보면 pwLen이 8일 때 값이 2가 넘어가는 것을 볼 수 있습니다.
이를 활용해서 pw의 각 bit별 length 및 pw를 구할 수 있습니다.

이제 pw를 넣어주면

문제가 풀렸습니다!