일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 카카오프로젝트 100
- 보안뉴스
- javascript
- php
- 보안뉴스요약
- 깃허브
- 자바스크립트
- 카카오프로젝트
- 카카오프로젝트100
- GIT
- 자바스크립트 jQuery
- Oracle SQL
- 보안뉴스 한줄요약
- 파이썬
- 자바스크립트 element api
- ES6
- 오라클
- 자바스크립트 prototype
- 랜섬웨어
- oracle db
- 보안뉴스 요약
- numpy
- 자바스크립트 기본 문법
- 다크웹
- 자바스크립트 node
- 보안뉴스한줄요약
- oracle
- 자바스크립트 객체
- python
- 자바스크립트 API
- Today
- Total
FU11M00N
Lord of Injection skeleton(10)단계 본문
이번 시간엔 10단계인 스켈레톤입니다!! 드디어 10단계라니 기분좋으면서도
앞으로의 문제들이 두려워지네요,,, 화이팅!!
자 이번문제에서 preg_match로 금지시키는 것은 prob,_(언더바), .(쩜) , ( ) 입니다!!
그리고 쿼리문을보면 pw의 값을 사용자로부터 가져오고 뒤에 and 1=0 이라는 논리 연산자가 붙었네요!!!
그리고 쿼리문에서 id는 guest로 박혀있지만 id의 값을 admin으로 적어줘야
solve()가 뜨면서 Clear가 될것입니다 그럼 먼저!
and 1=0에대해 자세히 설명하기전에!! and와 or 논리연산자 에대해 간단히 설명하자면
and는 둘다 참이면 True 값을 반환하고
or는 하나라도 참이면 Ture 값을 반환합니다!
제가만약에 ?pw=1111' or id='admin' 적어준다면 저것 자체는 참이지만
뒤에 and 1=0 때문에 False 값이 될것입니다.
자 그러면 어떻게 접근해야하나 생각해보면..
저희가 중점으로 봐야하는 코드는
id='guest' and pw='[사용자로부터의 값] and 1=0입니다.
그럼 정답을 유추해보겠습니다..!
참고로 and와 or의 우선연산자는 and가 더 높습니다!!
먼저 ?pw=123 으로 시작하여 id='guest' and pw=123 을 False 값으로 만들어서
앞에있는 id='guest' and pw=123가 연산을 하게되면 and 연산이 되기때문에,
쿼리문이 False 값이 반환됩니다.
그후 'or id='admin' pw=123 %23 을 넣으면 앞에서 반환받은
False 값과 id=admin이 or 연산을 하게되어 True값을 반환합니다.
뒤에 %23을 하는이유는 뒤에있는 and 1=0을 주석 처리 하기위함입니다!!
그럼 쿼리문은
id='guest' and ?pw=123 or id='admin' or pw=123#
False or ture =ture값 반환 그럼 또 앞에서의 ture or false 연산 = ture값 반환
그러하여 정답은 ?pw=1'or id='admin' or pw=123%23 입니다!
이번건 좀 저번단계보다 난이도가 있었다고 생각해요!!
다들 화이팅하고 다음단계로 가보겠습니다!
'Web Hacking > Lord of injection' 카테고리의 다른 글
Lord of injection darkknight(12단계) (0) | 2019.11.03 |
---|---|
Lord of injection golem(11)단계 (0) | 2019.11.01 |
Lord of Injection vampire(9)단계 (3) | 2019.10.29 |
Lord of Injection troll(8)단계 (0) | 2019.10.29 |
Lord Of Injection orge(7)단계 (0) | 2019.10.28 |