일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 prototype
- php
- 깃허브
- javascript
- 파이썬
- 카카오프로젝트100
- 랜섬웨어
- 자바스크립트 node
- 카카오프로젝트 100
- 보안뉴스 요약
- Oracle SQL
- numpy
- 자바스크립트 element api
- 오라클
- oracle
- 카카오프로젝트
- python
- 보안뉴스요약
- 보안뉴스
- 보안뉴스한줄요약
- 자바스크립트 jQuery
- 자바스크립트 객체
- 다크웹
- 자바스크립트 API
- 자바스크립트 기본 문법
- ES6
- oracle db
- 보안뉴스 한줄요약
- 자바스크립트
- GIT
- Today
- Total
FU11M00N
Lord of injecton assassin (15)단계 본문
안녕하세요!! 이번엔 assassin 15단계입니다!!
자 이번 문제도 소스가 비교적 짧네요!! 보러 가 봅시다!
음 우선 preg_match로 금지시키는 문자는 '(싱글쿼터) 입니다.
쿼리문은 pw에 사용자 입력을 하는 것 같고요,
&result ['id']가 admin이면 solve가 되어 문제가 풀립니다!
즉, 쿼리 문의 pw가 일치하는 id값을 가져와야 하는 건데요,
최종적으로 id가 admin인 pw를 알아내야 합니다!!
저는 처음에 이 문제를 보자마자 엄청 쉽네~ 하고 접근했다가
왜 안돼....... 가 되었습니다...
우선 문제에 대한 접근은 왜 where절에 pw = 이 아니고 pw like를 했냐 의심해야 봐야 합니다.
우선 w3 schools에서 like에 대해 자세히 알아봅시다.
링크는 여기 있고 자세한 설명은 아래에서 하겠습니다!
https://www.w3schools.com/sql/sql_like.asp
LIKE연산자는 열에 지정된 패턴을 검색하기 위해 WHERE절에서 사용됩니다.
LIKE연산자와 함께 자주 사용되는 두 개의 와일드카드가 있습니다.
그럼 와일드카드란 무엇인가???
와일드카드 문자(wildcard character)는 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에
지정할 목적으로 사용하는 기호를 가리킨다. 이 문자는 어느 곳에서 사용하느냐에 따라 약간의 차이를 보인다.
주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰인다.
-출처 위키백과 -
LIKE 오퍼레이터 설명
WHERE CustomerName LIKE 'a%' | "a"로 시작하는 값 찾기 |
WHERE CustomerName LIKE '%a' | "a"로 끝나는 값 찾기 |
WHERE CustomerName LIKE '%or%' | 임의의 위치에 "또는" 있는 값 찾기 |
WHERE CustomerName LIKE '_r%' | 두 번째 위치에 "r"이 있는 값을 모두 찾음 |
WHERE CustomerName LIKE 'a__%' | "a"로 시작하고 길이가 3자 이상인 값을 찾음 |
WHERE ContactName LIKE 'a%o' | "a"로 시작하고 "o"로 끝나는 값을 찾으십시오. |
그럼 이 개념 그대로 응용해봐서 pw를 알아내 봅시다!
그럼 하나하나 때려 넣어서 pw값을 알아내야 할 거 같은데요..
우선 제가 ?pw=0~9 a~z를 해봤는데 ?pw=8만 Hello guest가 뜹니다!!
그럼 이게 무슨 뜻이냐면
데이터베이스 안에 guest와 admin이 있다면
둘 다 맨 처음 pw의 값은 8이란 소리입니다.
근데 hello admin이 아닌 hello guest가 뜨는 이유는
prob_assassin 데이터베이스 안에 제일 첫 번째에 있는 값이 guest이고
두 번째가 admin이라
첫 번째에 있는 guest가 출력되는 것입니다!!
그럼 계속 하나하나 맞춰가 보면 ?pw=832%를 하면 solve가 되면서 hello admin이 뜨게 됩니다!
하지만 admin의 pw가 832가 아니고 832 뒤에 아마 몇 글자가 더 있을 겁니다.
여기서 admin의 pw를 다 알고 싶다면
?pw=________ 을 하게 되면 pw의 길이를 알 수 있는데요,
언더바를 8개 쓰면 hello guest가 뜨고 아까와 같은 원리로
guest와 admin 둘 다 pw의 길이가 8 글자일 것입니다!!!
그럼 admin의 pw 값은
?pw=832edd10으로 admin의 암호를 전부 알아냈습니다!
'Web Hacking > Lord of injection' 카테고리의 다른 글
Lord of injection succubus(17)단계 (0) | 2019.11.07 |
---|---|
Lord of injection zombie_assassin(16단계) (0) | 2019.11.06 |
Lord of Injection giant(14)단계 (0) | 2019.11.04 |
Lord of injection bugbear(13단계) (0) | 2019.11.03 |
Lord of injection darkknight(12단계) (0) | 2019.11.03 |