본문 바로가기
WEB_Security(실습)/LOS

SQL Injection 실습2 ( Lord of SQLinjection )

by Jnamelight 2017. 6. 10.

Wolfman



자 울프맨이다. 울프맨의 취약점을 분석해보면

아직까진 싱글쿼터 ( ' ) 를 막진않았다, 주석역시 막지 않았음으로 쉽게 풀릴것 같다.

하지만 공백을 막고 있기 때문에  or 문을 사용하기에는 조금 힘들것 같다.


여기서 공백을 안쓰고 or 문을 쓰는 방법이있다


or 우회  --->  || 


이런식으로 or를 사용하면 공백이 필요하지 않게 된다.



그후 id='admin' 을 삽입하여 클리어!





Darkelf



어이없게도 똑같은 문제인듯하다...

사실 울프맨에서는 공백을 우회하는 법을 물어본듯...


공백 우회법은 여러가지가 있다.

%0a, %0b ,%0c, /**/ 등 여러가지의 우회법을 이용하면 된다.




그럼 울프맨과 마찬가지로 클리어!




Orge



저번에 풀었던 오크와 비슷하다. 즉 Blind Injection 문제 하지만 or를 막아놓음..


하지만 울프맨을 풀면서 or 우회법을 알기 때문에 쉽게 풀수 있다.



이런식으로 하나하나 아스키 코드 값을 비교해서 풀어나가면 된다!

(정답은... 까먹음... ㅎㅎ) 

어쨋든 클리어!




Troll



트롤은 id 값으로 admin 을 넘겨주면 클리어 가능하다.

여기서 중요한것은 ereg 함수로 admin 값을 막아 놓은것!

 ereg는 취약점이 많은 함수이다...

대소문자 구분을 하기 떄문!!!

즉 단지 소문자만 막아 놓았기 때문에 mysql에서는 대소문자 구분을 하지 않음으로..




대문자 입력만으로 클리어!




Vampire



소스를 분석해보자 전문제인 트롤가 비슷하다.

여기서는 ereg 대신에 str_replace() 함수를 사용했다... 하지만 ereg와 마찬가지로

대소문자 구분을 한다... 즉 대문자로 쓰면..



좀 싱겁다 ( 물론 대소문자 구분을 하는것을 알았다는 가정하에... )



Skeleton




싱글쿼터와 주석을 막지 않았다면....... 답은 너무 쉽다

여태한거 복습 문제인가?



민망할 난이도..



Golem



갑자기 난이도가 팍 올랐던 문제.... 몇시간이 걸렸다..


일단 우회해야하는 기법이 많아졌다.


첫번째 or,and 는 우리가 많이 사용했던 ||,&& 로 우회가 가능

두번째 substr 역시 우회해야 한다.

우회 방법은 다른 함수를 사용하는 것이다.

mid(), right(left()), substring() 이런식으로 몇가지 함수가 가능한대

주로 mid를 사용한다 이유는 substr과 사용법이 같다! 물론 여기서는 substring 가능

마지막으로는 '=' 을 우회해야한다. 

= 은 like로 우회가 가능!


즉 정리해보면 


ascii(mid((select pw where id like 'admin'),1,1)) like 비교


이런식으로 바꾸어서 사용하면 된다



그럼 admin의 암호를 알아내고 클리어!



댓글