새소식

Game/los

Lord of sql injection [20]

  • -
반응형

 

[문제 20]

 

지금까지의 문제방식과는 조금 다르게 이미 hello guest가 출력 되어있다.

query를 보니 id는 guest로 고정되어있고, 주석처리가 되어있다. (뒤 쿼리 무시)

pw를 맞추는 문제가 아니라, id 가 admin이면 풀리는 문제이다.

이미 id=guest여서 hello guest가 뜬것이다.

 

이번 문제는 주석을 우회하여, pw에 id가 admin이게끔 쿼리를 조합해주면 되는 문제인 것 같다.

 


 

이 문제를 풀기전에, 

주석에 대해 알고 넘어가자!

mysql에서 주석처리 방법은 다음과 같다.

 

1. #  : 한 줄을 주석처리 할때

2. -- : 한 줄을 주석처리 할때

3. /**/ : 여러줄 주석처리

 

 

이번 문제에서 쓰인 주석은 # 즉 한줄 주석 처리 이다.

 

다시 문제로 돌아가서 생각해보자.

 


 


select id from prob_dragon where id='guest'# and pw='' 라는 쿼리가 있다.

뒤에 # 부터 이어지는 한줄 pw='adsfagafd' 라면 이어지는 문장이기 때문에, 전부 주석처리가 된다.

만약! pw 자리에 '\n and pw='hello'# 라는 쿼리를 입력 한다면   

select id from prob_dragon where id='guest'# and pw='  '
and pw='hello'#  '
이렇게 될 것이다. (빨간색이 입력한 쿼리, 검정색은 원래 쿼리구문)


#은 한줄만 주석으로 처리할 수 있다. 즉 아래의 문장이 이어진다면 줄바꿈에 상관없이 쿼리를 실행할 것이다.

우리가 원하는 값은 id=admin이라는 쿼리이다.

pw='     '\n and pw='' or id='admin' 라고 입력한다면?


select id from prob_dragon where id='guest'# and pw=''
이 문장은 그대로 유지가 되고 한줄 내리기(개행 == %0a)
내려진 다음 문장은 위 원래 쿼리 구조랑 맞춰서
and pw = '' (여기까지 원래 쿼리랑 맞춘 구문)

and pw='' or id = 'admin' # 이라고 하면   id = admin으로 인식된다.


# == %23 
마지막 부분에 #을 해줘야 원래 pw 에 '(작은따옴표) 도 주석처리 되고 그 이후 쿼리가 무시된다.

▼ 개행 관련 url 인코딩 알아보기

더보기

전에도 올린 거죠! (los 14번 풀이)

 

참고하고 웬만하면 외워주세요!

 

?pw=?pw=%27%20%0a%20and%20pw=%27%27%20or%20id%20=%20%27admin

 

 

 

 

dragon 문제

Clear!

 

주석에 대한 이해도만 있다면 충분히 풀 수 있는 문제인 것 같습니다.

 

반응형

'Game > los' 카테고리의 다른 글

Lord of sql injection [19]  (0) 2020.09.15
Lord of sql injection [18]  (0) 2020.09.14
Lord of sql injection [17]  (0) 2020.09.14
Lord of sql injection [16]  (0) 2020.09.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.