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를 넣어주면

문제가 풀렸습니다!