이번에는 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 |