티스토리 뷰
LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
13단계 소스코드이다.
이번은 전 단계에서 조건이 더 추가되었다.
no에 substr, ascii, or, and, like, 0x, = 이 필터링되었다.
이것을 우회하고 no 값과 pw 값을 찾아서 넣으면 문제는 해결된다.
일단 blind sql을 수행하기 위한 조건인, 참과 거짓일 때 웹 페이지가 다르게 출력되는 걸 찾아야 한다.
공백 우회는 %09 (tab)으로 등호는 in으로 우회하여 blind sql을 시작할 조건을 갖췄다.
no 값은 2다.
and는 %26%26으로 우회했다.
=(등호) 우회방법
1. like // 등호와 같은 방법으로 쓰인다
2. instr(a, "b") // instr(a, "b") , instr(a, b) a와 b 가 같은지 비교한다
3. >< // 1 <a , a <3
4. in // a in ("b")
like는 필터링 처리되어서 쓸 수 없으므로 4번을 사용했다.
이젠 pw 길이를 추출해야 한다.
pw 길이를 추출할 땐 instr()을 사용했다.
pw는 역시 8 자리이다.
길이를 알았으니 인젝터를 사용하여 pw 값을 뽑아내면 된다.
수많은 시행착오가 있었지만 긍정적인 결과가 나온 사진만을 첨부하겠다.
or 필터링으로 의도치 않게 ord() 함수까지 필터링되었다. 그래서 결과적으론 아직 내 실력으로 이진 탐색을 구현할 수 없었다. 그래서 일단 문제를 풀기 위해 순차적 검색기법을 사용했다. 그 이유는 php로 보내는 쿼리에서 pw값을
도저히 수로 치환할 수 없었다. 그래서 문자열로 직접 비교해야만 했다. 하지만 사진에서 볼 수 있듯이 pw 값이
52 DC3991로 나왔는데 이를 no=2과 함께 입력해봤는데 문제가 해결되지 않았다.
instr(a, "b") 함수에선 a와 b의 대소문자를 구분하지 않는다는 걸 추측했다.
또한 a in("b") 마찬가지다.
일단은 DC를 4가지 경우의 수로 넣어서 문제를 풀긴 했지만 코딩에서 완벽히 해결할 수 있는 방법이 있을까 고민해봐야겠다.
시행착오
1. and 필터링 시 %26%26 사용한다 // php에서 &&는 연산자로써 먹히지 않는 듯하다. (작동 안 함)
2. instr(a, "b")는 두 가지 경우로 나뉜다.
2-1. b에 더블 쿼터를 씌웠을 때 영어는 대소문자를 구분하지 않고 비교한다.
2-2. b에 더블쿼터를 씌우지 않았을 때 숫자 값을 바로 출력하고 문자 값은 형 변형을 지원하지 않는 듯하여 숫자랑 비교하자마자 끝난다. (숫자 먼저 출력하고 문자열을 인식하게 출력해서 비용을 줄일 수 있게 응용 가능하다.)
3. 아스키 코드값으로 비교를 할 수 없을 때 이진 검색을 사용할 수 없는데 이때는 순차적 검색을 사용할 수밖에 없다.
이를 조금더 효율적이게 검색하는 방법을 찾아봐야 한다.
'SQL injection > lord of SQL' 카테고리의 다른 글
Lord Of SQL injection 15단계-assassin (0) | 2022.01.10 |
---|---|
Lord Of SQl injection 14단계-giant (0) | 2022.01.08 |
Lord Of SQL injection 12단계-darknight (0) | 2022.01.07 |
Lord Of SQL injection 11단계 [2] 이진검색 (0) | 2022.01.06 |
Lord Of SQL injection 11단계-golem (0) | 2022.01.06 |
- Total
- Today
- Yesterday
- 백준 피보나치 수열
- 김영한 실전 자바 중급
- los 15단계
- java
- ys.k
- 백준
- lord of sql
- samron3
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 김영한 실전 자바 기초
- 프로그래머스
- Los
- zixem
- 자바
- samron
- 기술스택
- 백준 피보나치
- los 15
- 김영한
- extends
- 스프링
- 상품을 구매한 회원 비율 구하기 파이썬
- 코딩테스트 준비
- static
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 상속
- spring
- 코딩테스트
- webhacking.kr
- 김영한 실전 자바 기본
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |