티스토리 뷰
LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
17단계 소스코드이다.
새로운 함수가 보인다.
strrev()// 문자를 뒤집는 함수이다. ex) id=admin strrev(id) ->nimda
id와 pw에 ', ", null 을 필터링 시키고 값을 뒤집어서 다시 id와 pw에 저장하며 id와 pw값이 db에 있으면 문제가 해결된다.
addslashes를 우회하고 거꾸로된 문자열을 대입했을 때 풀리는 쿼리를 집어넣으면 된다.
addslashes() // ', ", %00 앞에 이스케이프 문자를 넣어 해당 문자들의 기능을 상실시키고 문자그대로로 인식시킨다.
이번문제에서는 strrev() 함수로 인해 id와 pw에 입력된 값이 역순으로 배열되니 addslashes()에서 필터링되는 문자열이 실제로 필터링 되지않는다. 이를 이용해 id='' 에서 뒤의 '를 문자열 처리할 수 있다.
id='&pw=-+--1||
ㄴid=''\'&pw=||1--+-
하지만 싱글쿼터를 삽입하니 id에서 싱글쿼터가 닫히며 정상적인 쿼리가 되지 않는 모습이다.
싱글쿼터가 아닌 다른 addslashes()에 걸리는 문자를 넣어준다. ex) ", %00
해결!
마찬가지로
더블쿼터 또한 작동한다.
시행착오
1. strrev() 함수를 너무 어렵게 생각했다.
2. strrev() 함수에서 --+- 주석처리 방법은 먹히지 않는다. (뒤집어 지면 -+-- 이 되기 때문에 -+--으로 넣어야 정상적인 주석처리가 된다.
3. 쿼리문을 항상 잘읽고 정확하게 해석하는 것이 중요하다. (where id='$_get[id]' and pw='$_get[pw]' 에서 id와 pw의 값은 '' 싱글쿼터 안에 들어간다. )
'SQL injection > lord of SQL' 카테고리의 다른 글
Lord Of SQL injection 19단계-xavis (0) | 2022.01.11 |
---|---|
Lord Of SQL injection 18단계-nightmare (0) | 2022.01.10 |
Lord Of SQL injection 16단계-succubus (0) | 2022.01.10 |
Lord Of SQL injection 15단계-assassin (0) | 2022.01.10 |
Lord Of SQl injection 14단계-giant (0) | 2022.01.08 |
- Total
- Today
- Yesterday
- 프로그래머스
- lord of sql
- spring
- samron3
- 백준 피보나치 수열
- java
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 백준 피보나치
- 백준
- 상속
- los 15
- extends
- 코딩테스트
- zixem
- Los
- webhacking.kr
- los 15단계
- samron
- 코딩테스트 준비
- ys.k
- 김영한 실전 자바 중급
- 기술스택
- static
- 상품을 구매한 회원 비율 구하기 파이썬
- 김영한
- 김영한 실전 자바 기본
- 스프링
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 자바
- 김영한 실전 자바 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |