[LOS] SQL Injection 풀이 (troll)

필터링 되는 문자

'

admin

 

여기서 주된 쟁점은  id=admin의 입력이 안되는 필터링을 어떻게 우회할 것인가 이다.

전에 문제에서도 말했듯이.

preg_match('/~~~/',입력된값) 은 i가 있냐 없냐에 따라 대소문자에 상관없이 필터링할 것인지 아니면  필터링 안할지를 결정한다. 위 코드를 보면 admin/" 이다. 즉 대소문자 필터링을 안하기 때문에 Admin, aDmin, adMin 과 같은 값을 넣으면 필터링 우회가 가능하다.

 

 

 

 

[LOS] SQL Injection 풀이 (Vampire)

필터링되는 문자

'

 

이 문제는 GET방식으로 id를 가져와 strtolower로 다 소문자로 만들어서 admin이 문제에 들어가면 공백으로 만들어서 sql문에 전달하는 문제이다. 이 문제는 매우 쉬운점이 문자를 삭제한다는 것이다 만약 삭제시 하나만 삭제하는지 아니면 완전히 사라질때까지 계속 삭제하는지를 알면되는데 대게 모든 함수는 한번만 실행하기 때문에 admin을 삭제한다면 adadminmin 이렇게 해도 admin만 남아 sql문으로 전달이 된다. 저걸 전달하면 아래와 같이 풀리게 된다.

 

 

 

 

 

[LOS] SQL Injection 풀이 (Skeleton)

필터링 되는 문자

prob

-

.

()

 

sql 문을 보게되면 pw에 어떠한 값을 넣더라도 1=0은 거짓이기 때문에 sql 문이 전체가 거짓이 되어 어떠한 값도 찾아내지 못하게 된다. 이를 위해서는 guest가 있는 앞 부분과 1=0 이 있는 뒷부분을 둘다 구분하여 가운데에 참을 넣어주면 된다.

query : select id from prob_skeleton where id='guest' and pw='' and 1=0

이런식으로 말이다. 아래 처럼하면 가운데 id=admin만 살아남아 id=admin인 것을 찾는 sql문이 된다.

id='guest' and pw='x' or id='admin' or 'x' and 1=0

 

 

+ Recent posts