2019. 7. 29. 14:13ㆍ문제풀이/los.rubiya.kr
링크는 https://los.rubiya.kr/ 여기.
회원가입할 때 주의점은 아이디/이메일/비번 모두에 . 이랑 _ 들어가면 안되는거 ㅠㅠㅠㅠ
내 이메일에 _ 들어가는데 못써서 당황...
회원가입 후 첫 문제는 gremlin이다. 눌러주면 문제는 다음과 같다
preg_match는 해당 문자열이 존재하는지 확인하는 함수이다. 문제에서는
prob _ . () 가 있으면 No Hack
_
이라는 문구를 출력하며 exit된다.
preg_match 함수 안에 있는 /i는 대소문자 상관없이 확인한다는 말!
즉 /prob도 안되고 /pRob /PROB 모두 안된다는 말이다.
이 문제를 solve하려면 $result['id']가 존재해야 한다.
즉, 쿼리가 존재하기만 하면 된다. (db 내 모든 데이터에 id가 존재한다는 가정 하에)
그래서 그냥 id 에 'or1=1--(공백) 을 넣어주면 query는
select id from prob_gremlin where id=''or 1=1-- ' and pw=''
가 된다.
mysql에서 --(공백)은 한줄주석이므로 뒤에 있는 내용은 유효하지 않게 되고
(그래서 뒤의 pw에 아무 값도 넣지 않아도 됨)
id=''or 1=1이 0or1이 되므로 참이 되어 모든 데이터를 출력하라는 쿼리가 된다.
주의할 점은 or 뒤에 반드시 띄어쓰기 해줘야 한다는 것!
입력은 url의 맨 뒤에 ?id=[정답] 이렇게 넣으면 된다. 아래처럼!
[https://los.rubiya.kr/chall/gremlin_280c5552de8b681110e9287421b834fd.php?id=%27or%201=1--+]
만약 pw도 입력하고 싶다면 ?id=[정답1]&pw=[정답2] 이렇게 적으면 된다.
참고로 %27은 url encoding 방식으로 '를, %20은 띄어쓰기를 나타낸다.
이렇게 입력할 수 있는 이유는, id와 pw를 GET방식으로 불러오라고 적혀있기 때문이다.
GET방식의 경우 url 파라미터로 입력받고, POST방식으로 입력해야 할 경우 burp suite같은 툴을 이용하면 된다.
'문제풀이 > los.rubiya.kr' 카테고리의 다른 글
[LOS] 6번 darkelf 풀이 (0) | 2019.07.29 |
---|---|
[LOS] 5번 wolfman 풀이 (0) | 2019.07.29 |
[LOS] 4번 orc 풀이 (0) | 2019.07.29 |
[LOS] 3번 goblin 풀이 (0) | 2019.07.29 |
[LOS] 2번 cobolt 풀이 (0) | 2019.07.29 |