- 딥블루매직
- 디지털 포렌식
- 보안뉴스
- lz4
- 블리딩비트
- 포렌식
- ctf
- 랜섬웨어
- Digital Forensic
- 디포전
- jump lists
- live response
- This Week In 4n6
- News
- CSRF
- Hack
- Directory
- forensic
- attack
- 실시간 대응
- aff4
- mru
- Bleedingbit
- E01
- 벨카소프트
- filesystem
- Eng
- 4n6
- Vulnerability
- belkasoft
- Today
- Total
BLOG
SQL Injection(SQL 삽입) 본문
( 현재 운영되고 있는 사이트에서 사용하지 마십시오. 책임 질 수도 없고, 불법입니다. )
우선 여기에 가상의 홈페이지가 있다.
일단 임의의 이메일과 패스워드를 입력해보겠다.
당연히도 맞지 않는다. 그래서 이번엔 password 끝에 ' 를 붙여서 입력해보겠다.
예상하지 못한 오류가 발생했다고 홈페이지와 로그에서 보여주고 있다.
로그에서 중요하게 봐야할 부분은 " 'password' ' limit 1" 이다.
왜 중요한 지는 아래에서 서술하겠다.
이 코드가 DB에서 원하는 데이터를 뽑아내는 코드다.
입력된 email은 user@email.com 이고
패스워드는 password 이다.
Ex. 여기서 limit는 출력되는 레코드의 개수를 제한할 때 사용된다.
간단히 이해하면서 넘어가고, 나머지는 DB를 자세히 공부하면서 알아보는 걸로..
이게 아까 오류가 났을 때 입력했던 패스워드다.
위와 뭔가 다르지 않은가? 입력했던 패스워드가 바로 SQL 구문에 직접적으로 들어가있다.
이로 인해 오류가 난 것이다. 이 행동으로 인해 서버가 SQL Injection 공격의 취약점이 될 수 있다는 걸 알 수 있다.
그러니 바로 ' or 1=1-- 라는 간단한 구문으로 실행해보자.
' or 1=1-- 를 입력하니 로그인이 됐다.
패스워드에 들어간 구문이 ' ' or 1=1--' LIMIT 1이 되어있다. 이 부분을 뜯어보자.
우선 뜻을 알아보자면 pass =' ' 로 구문 오류 없이 작은따옴표를 닫았고,
or 1=1 로 참을 만든 후, -- 를 붙여 그 뒤에 구문을 무시할 수 있게 주석처리했다.
이로 인해 올바른 패스워드 입력 없이 로그인 할 수 있었던 것이다.
'SECURITY > Vulnerability' 카테고리의 다른 글
SESSION FIXATION ( 세션 고정 ) (0) | 2021.07.17 |
---|---|
Unencrypted Communication ( 암호화되지 않은 통신 ) (0) | 2021.07.15 |
Directory Traversal (디렉토리 순회) (0) | 2019.10.16 |