티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
40번 문제이다.

딱 봐도 sql injection문제이다.
오류 메시지를 표출하지 않는걸 보아 blind sql이라고 판단했다.
설레었다.
하지만 2달간의 공백이 문제였는지, 해결하는데 상당히 고전했다.
바로 보자.
입력창이 no, id, pw 가 있다.
테스트 결과 no에서만 인젝션이 가능했으며, 공백, and, or 등이 필터링당해있었다.
하지만 위의 필터링은 모두 우회가 가능했다.
필자의 경험상 id, pw, no가 있으면 보통 내부의 쿼리의 순서가 id=''&pw=''&no= 순으로 왔던 기억이 있다.
또한 no는 쿼터에 씌워져있지 않았다.
일단 그렇게 가정하고 문제를 해결해보자.
정상적인 로그인 성공 화면이다.

또한 no 값에 db의 id값과 다른 no값이 들어가면 Failure 페이지를 보여준다.

실질적으로 인젝션이 가능한지 알아보자.

↓

no가 0일 때는 Failure 페이지가 나왔지만, ||1을 주었을 땐 정상적으로 로그인되는 것을 볼 수 있다.
blind sql을 위한 준비는 끝났다.
하지만 우린 무얼 위해 blind sql을 해야 하는지는 모른다.
admin의 pw를 알아야 한다고 추측할 뿐..
나는 일단 admin id를 접속하려고 많은 시도를 했다.
1. 0||id<'b'
2. 0||id='admin'
3. 0||id="admin'
4. 0||id>"ad"
5. 0||id<98
위 방법들에서 답을 찾을 수 없었다.
그래서 admin을 괄호 없이 확실히 줄만 한 게 뭐가 있지 생각하다가 진법 변환이 생각났다.
0||id=0x61646d696e
제대로 작동하였으며 아래 페이지를 보여줬다.

이제 우리는 admin의 pw를 찾아야 한다는 걸 확인하였다.
길이를 알아보자.
쿼리 : ?no=0||id=0x61646d696e%26%26length(pw)=10&id=guest&pw=guest

이제 비밀번호 추출을 위한 인젝터를 만들자.

LUES_ADMIN이 나왔다.
결론적으로 이 값은 답이 아니다.
guest의 비밀번호 guest 중 UES가 불러와진 것이다.
이는 2진 탐색 코드에서의 쿼리 결과 복수 값 존재에 해당한 문제이다.
난 이런 쿼리를 굉장히 싫어한다.
위 url 코드에서 substr로 뽑아올 pw의 값에 대해 정확히 명시되어있지 않기 때문이다.
수정해보자.

쿼리에서 받아올 pw에 대한 값을 and 조건문으로 admin과 연결시킨 후 값을 불러왔다.
이제 불러와진 값이 확실한 admin의 pw라고 할 수 있다.
입력하자.

음..? ㅋㅋ

대부분의 sql은 대소문자를 구분하지 않는다.
문제 해결.
시행착오
1. mssql, mysql, oracle 10g 이하에서는 대소문자를 구분하지 않는다.
2. 쿼리에 if 가 들어가지 않아도 참 거짓을 사용할 수 있다.
3. 인젝션 과정 중 7878877777과 같은 값이 출력되었는데 이게 뭔지 추후 알아봐야겠다.
'SQL injection > webhacking' 카테고리의 다른 글
| webhacking 42번 (0) | 2022.08.05 |
|---|---|
| webhacking 41번 (0) | 2022.08.03 |
| webhacking 39번 (0) | 2022.07.28 |
| webhacking 38번 (0) | 2022.07.28 |
| webhacking 36번 (0) | 2022.07.27 |
- Total
- Today
- Yesterday
- 상품을 구매한 회원 비율 구하기 파이썬
- samron3
- lord of sql
- java
- 상속
- static
- 김영한 실전 자바 중급
- 백준 피보나치
- webhacking.kr
- 백준
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 코딩테스트 준비
- 김영한 실전 자바 기본
- Los
- 김영한
- ys.k
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 스프링
- samron
- los 15
- 자바
- 백준 피보나치 수열
- los 15단계
- 코딩테스트
- 김영한 실전 자바 기초
- extends
- zixem
- 프로그래머스
- 기술스택
- spring
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |