본문 바로가기
워게임/LOS

[los - SQL injection] gremlin ( 1단계 )

by B T Y 2017. 9. 7.
반응형

sql injection war game - los.eagle-jump.org


  - php 코드가 공개되있고 실행된 SQL 쿼리도 볼 수있는 사이트로

    이 사이트에서 php와 쿼리가 보이지 않는 상황에도 머리에 그려질수 있도록 연습을 한다.



[LOS - SQL INEJCTION] gremlin ( 1단계 )







[ 풀이과정 ]



if($result['id'])가 실행되어 안에 있는 solve("gremlin");이 실행되게 하는게 목표이다.

그러려면 $result 변수에 id라는 key값에 값이 들어있어야 해당 조건이 true로 된다.


pregmatch()를 사용해서 prob  _  .  (  ) 기호들을 막아 다른 테이블로의 이동을 할 수 없도록 해놨다.


위 코드를 분석해보면 SQL 쿼리는 select id from prob_gremlin where id='' and pw=''인데

해당 조건을 true로 만들어주려면 select 쿼리에서 어떤 아이디든 검색이 되도록 해주면 되는데

이때 참/거짓 조건을 이용해서 해당 취약점을 공략 하였다.


해당 SQL 쿼리에서 id와 pw에 입력되는 값은 모두 싱글 쿼터로 감싸져 있어 

문자값으로 인식이 되기 때문에 우선 이 쿼터를 무력화 시켜줘야 한다.

싱글 쿼터로 감싸져 있다면 같은 싱글 쿼터를 이용한 string SQL injection을 이용해서 참의 식을 하나 만들어주고

주석을 이용해서 뒤에 있는 싱글쿼터와 나머지 쿼리를 무력화 시켜준다.


select id from prob_gremlin where id='' or 1=1 #' and pw='' 로 쿼리를 만들어서 

둘중 하나가 참일 경우에 해당 쿼리가 실행이 되도록 하면 문제가 풀리게 된다.





los 1단계 클리어~~~







반응형

댓글