티스토리 뷰

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

41단계 소스코드이다.

sqlite에서 mssql로 서버가 바뀌었다.

id와 pw를 파라미터로 받으며 메타데이터 접근과 시간 기반 공격들을 필터링하고 있다.

따라서 남은 방법은 blind sql과 error sql이다.

그리고 바로 그 밑줄에 에러 발생 시 mssql의 에러를 출력해준 뒤 종료해준다는 구문이 있다.

에러 기반 문제이다.

에러 기반 문제는 보통 에러 출력 페이지에 사용자가 원하는 값을 표출되게끔 한다.

여러 번 시도를 해봤지만 도저히 문제가 풀리지 않아 인터넷 힘을 다시 빌렸다..

쿼리: ?id=admin&pw=1%27or%20id=%27admin%27%20and%20pw=1--+-

기존 쿼리를 종료하고 db에 직접 들어갈 쿼리를 작성해서 입력하니 에러 메시지에 uawe0f9ji34fjkl이 출력되었다.

문제 해결!
시행착오

1. order by와 union select를 사용하는 에러 기반 문제는 los에는 없는 것 같다..

2. mssql에서는 문자열과 int 값 비교를 시도하면 문자열을 int로 변환하려 하는데 이때 문자열이 그대로 노출된다.

댓글