2023. 10. 5. 17:10ㆍSWLUG/web hacking
두번째 문제
두번째 문제인 Los는 Load of SQL injection(LOS)는 SQL injection에 대해 실습해 볼 수 있는 사이트인데 던전 형식으로
총 25단계까지 있으며 한단계씩 클리어해가는 Wargame사이트이다.
첫번째 문제를 들어가자마자 아래와 같은 php코드가 떴다.
위 코드의 내용을 살펴보면 , 4번째줄 정도부터 의미있는 내용이 있는데, preg_match 함수로 id와 pw의 특정 문자열을 필터링하고 있는 것을 확인할 수 있다.
또한 입력받은 id와 pw를 확인하여 쿼리문이 정상적으로 수행되면 문제가 해결된다.
sql injection 을 이용하여 쿼리문이 항상 true를 반환할 수 있도록 id와 pw의 인자를 조작해야한다.
select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'
select id from prob_gremlin where id='1' or '1' and pw='1' or '1'
첫번째 줄에 쿼리는 "prob_gremlin" 테이블에서 'id'와 'pw'가 주어진 값과 일치하는 행의 'id'를 선택한다.
이 쿼리는 사용자의 입력이 직접 쿼리에 삽입되기 때문에 SQL 인젝션 공격에 취약하다.
두번째 줄에 쿼리는 "prob_gremlin" 테이블에서 'id'가 '1'이거나('1' or) '1'이고(and) 'pw'가 '1'이거나('1' or) '1'인 행의 'id'를 선택한다.
마찬가지로 SQL 인젝션에 대한 취약점이 있다.
위와 같은 sql문이 전송되도록 하기 위해서는 페이지의 url 뒤에 ?id=1' or '1 & pw=1' or '1을 입력해줘야한다.
이 문제도 결국은 수업때 배웠던 방식을 활용하는 것 같다.
위와 같이 입력하면 id와 pw가 모두 참이 되므로, 최종 쿼리문은 true가 반환되며 문제가 풀린다.
clear가 떴다.
4주차까지 문제를 다양하게 풀어보면서 내가 추측하는게 딱 맞아 떨어지기보다는 아직까지는 모르는걸 많이 쌓아가는 기분이다.
아직은 모르는게 당연하니까 한문제씩 풀때마다 그냥 흘려보내지 않도록 잘 복습해야겠다.
참고 학습 자료
[LOS] 1. gremlin 문제 풀이 :: 끄적끄적 (tistory.com)
'SWLUG > web hacking' 카테고리의 다른 글
4주차_Webhacking 과제4 : los(goblin) (0) | 2023.10.05 |
---|---|
4주차_Webhacking 과제3 : los(cobolt) (0) | 2023.10.05 |
4주차_Webhacking 과제1: Dreamhack(simple_sqli) (2) | 2023.10.05 |
3주차_Webhacking 과제4 ([Dreamhack] image-storage) (0) | 2023.09.28 |
3주차_Webhacking 과제3 ([root-me] File upload - Double extensions) (0) | 2023.09.28 |