본문 바로가기

Wargame/Lord Of SQL injection (eagle-jump)

[LOS] 1번 gremlin







이 캐릭터의 사진을 누르면 아래와 같은 코드가 나온다.





우선 GET 방식으로 id와 pw를 받아온다. 쿼리문을 보면 받아온 id와 pw가 일치할 때의 칼럼 id에 있는 값을 찾으라는 명령문이다. 만약 칼럼 id에 있는 어떤 값이든 찾게 된다면 문제는 해결된다.


 GET 방식으로 받아온 id와 pw는 필터링된다. 하지만 지금은 크게 중요하지 않다.


주소창에 ?id=1&pw=1' or '1=1 라고 입력해주면 쿼리문은 다음과 같이 바뀌면서 문제가 풀린다.




mysql에서 and 연산자가 or 연산자보다 우선순위가 더 높기 때문에 

select id from prob_gremlin where (id='1' and pw='1') or ('1=1')

위와 같이 된다.


왼쪽 조건이 거짓이 되고 오른쪽 조건이 참이 되므로 $result['id']에 값이 존재하게 된다. 

'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] 2번 cobolt  (0) 2017.08.02