김승현

[Lord Of SQLInjection] gremlin 1번 문제 write up 본문

Web/Lord Of Sql

[Lord Of SQLInjection] gremlin 1번 문제 write up

kshind 2023. 3. 4. 19:08

문제

include를 통해 config.php를 로드

login_check();함수 실행

db에 연결함

만약 id에 입력한  값에 /prob, _, .,  (, ) 총 다섯 개를 대소문자 구분없이 들어있다면

나가지면서 No Hack이라고 뜨는 문장 같다.

preg_match는 정규식 표현 검사하는 함수

아래는 pw에 대해 검사하고 No Hack

query에 select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}' 저장

(id와 qw를 동시에 만족하는 걸 찾아야 함)

만약 id가 존재하면, (sqli가 성공했으면) gremlin 문제가 풀린다는 내용이다.

.

.

.

 

풀이

그냥 query에 저장된 내용을 바탕으로 sqli를 해보면 될 것 같다. id나 pw가 '(작은따옴표)로 묶여있다.

 

' or 1 #

위와 같이 입력하면 된다.

 

그러나 실제로 입력하고 query를 보면 #이 사라진 걸 볼 수 있는데 디코딩이 된 상태로 들어가기 때문에 우리는 

인코딩을 한 번 해서 값을 입력해줘야 한다. #은 %23이기 때문에 최종적으로

' or 1 %23