SQL injection - Comment
2020. 12. 23. 16:50ㆍ문제연습/bs_Training
반응형
본 티스토리 블로그는 PC에 최적화되어 있습니다.
모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.
Lab: SQL injection vulnerability allowing login bypass
1. 문제 내용
간단히 요약하자면 관리자 계정으로 로그인하는 SQL 삽입 공격을 수행하라고 합니다.
한번 lab에 접속해 보도록 하겠습니다.
1.1 접속 화면
해당 로그인 화면 소스코드를 살펴보니 다음과 같았습니다.
특별한 부분은 없으나, hidden 타입의 csrf 이름의 데이터가
알 수 없는 값을 전달한다는 것을 알 수 있습니다.
인터럽트를 걸어서 통신 내역을 확인해 보도록 하겠습니다.
딱히 통신 내역에서도 특별한 것은 없기에 추측을 통해 쿼리문을 예측하고 푸는 방법밖에 없습니다.
2. Attack
2.1 Conjecture
"select userId, userPw from (임의의 테이블) where userId='id' and userPw='pw';"
(사용자가 입력한 데이터를 임의로 id, pw라고 부르겠습니다.)
저장된 DB에서 입력된 id, pw의 정보를 검색하여 참, 거짓을 확인하는 방식입니다.
만약, 없는 계정이거나 정보를 잘못 입력했다면 거짓을 반환할 것입니다.
위 경우에 해당하는 인젝션 쿼리를 작성해 보도록 하겠습니다.
select userId, userPw from (임의의 테이블) where userId='administrator'--' and userPw='pw';"
이렇게 쿼리를 날리게 되면 우리가 원하는 데로 관리자 권한 로그인이 가능해질 것입니다.
한번 시도해보도록 하겠습니다.
역시 우리가 원하는 데로 인젝션이 먹혔습니다.
로그인 쿼리는 기본적인 형태를 알고 있어야 추측이 가능합니다.
인젝션 문제는 다양한 예제를 통해 sql 구문을 보고 경험을 쌓는 것이 필요한 것 같습니다.
다음 시간에도 이어서 문제를 풀어보도록 하겠습니다.
반응형
'문제연습 > bs_Training' 카테고리의 다른 글
SQL injection - UNION3(Examining the database1) (0) | 2020.12.26 |
---|---|
SQL injection - UNION3 (0) | 2020.12.25 |
SQL injection - UNION2 (0) | 2020.12.25 |
SQL injection - UNION1 (0) | 2020.12.23 |
SQL injection - where 구문 (0) | 2020.12.22 |