본문 바로가기
워게임/LOS

[los - SQL injection] cobolt ( 2단계 )

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

[los - SQL injection] cobolt ( 2단계 )







[ 풀이과정 ]



cobolt에서도 if($reulst['id'] == 'admin') 조건을 만족시켜야 그안에 있는 solve("cobolt")가 실행되면서 문제가 풀린다.

여기선 조건문이 실행 되려면 $result['id'] 안에 'admin'이라는 값이 들어있어야 한다.

$result는 mysql_fetch_array()를 사용해서 해당 쿼리의 결과에서 한줄의 행을 가져와 저장시켜둔 변수이다.

그렇다면 제일 첫번째 행에 id 컬럼이 admin에 대한 값이 들어있어야 한다는 얘기가 된다..


여기서도 id와 pw값을 쿼터로 감싸 문자로 받는데 여기서도 쿼터에 사용이 따로 막힌게 아니기 때문에

string SQL injection이 가능해진다는걸 알 수 있고 그렇다면 얘기는 간단해진다.


싱글 쿼터를 사용하고 있는데 여기서는 admin이라는 id 값을 조회해야 하기 때문에 앞쪽 쿼터는 건드리지 않고

admin 입력뒤에 싱글 쿼터를 하나 적게 되면 해당 id에 대한 문자입력은 그걸로 끝나게된다.

그리고나서는 이제 뒤쪽에 싱글쿼터와 나머지 쿼리들을 무력화 시켜야하는데 

그 부분은 주석을 이용하면 간단하게 처리가 된다.


select id from prob_cobolt where id='admin' #' and pw=md5('')

같이 만들어주게 되면 오히려 싱글 쿼터를 이용해서 원하는 id 컬럼을 검색 할수 있게 된다.





2단계 클리어~~~




반응형

댓글