찬란하게

[웹해킹] SQL Injection 본문

정보보안/웹 해킹

[웹해킹] SQL Injection

체리핫 2021. 5. 22. 09:51

DB 종류

 

TIP)

방화벽 룰에 따라 어느 정도를 막는건지, 인젝션이 안먹힌다는 건 소스가 안전한건지 별도의 웹방화벽이 있다는 황은 몰라서, 확실하게는 답하기 제한되지만...

혹시나 참고가 된다면...

해당 DB서버의 열린 포트를 확인해서...

mssql은 1433번 port가 열려있고,

mysql은 3306번 port가 열려있고,

oracle은 1521번 port가 열려있습니다.

그것도 확인이 안되면, 대략 추정을 할 수도 있구요...

1. asp, php를 쓰거나 웹서버가 windows에 IIS면 mssql일 것이다.

2. jsp를 쓰고, 웹서버가 windows거나 DB가 소규모이면 mysql일 것이다.

3. jsp를 쓰고, 웹서버가 unix거나 DB가 대규모이면 oracle일 것이다.

4. 국산 애호가이면, tibero일 것이다.

그것도 안되면, 홈페이지 스시템 관리자에게 전화를 걸어서, "계속 홈페이지 접속을 하면, db에러 라고 뜨는데... 무슨 db를 쓰나요?"라고 물어본다.

- 해대 18기 유영일님 의 답변 -

 

     
 Numeric Injection SQL Injection 취약점이 존재하는 입력의 형태가 정수일 때의 Injection

정수의 타입으로 입력하기 때문에 String과 달리 ' 작은 따옴표가 없다.

띄어쓰기를 할 수 있어야 추가적인 명령을 할 수 있다. (만약 코드 상에 trim()이나 공백을 지워주는 함수가 있다면 불가능
select * from news where no=1 union select * from news *
 String Injection 취약점이 존재하는 입력의 형태가 문자일 때의 Injection

우리가 입력하는 것이 작은따옴표 ' 안으로 들어가기 때문에 Numeric Injection처럼 바로 명령을 이어붙이지는 못함
 
  주로 쓰는 DB
ASP MS SQL
JSP 웹서버가 windows거나 DB가 소규모이면 mysql
웹서버가 unix거나 DB가 대규모이면 oracle
PHP My SQL

 

DB 버전 확인 주석
MS SQL SELECT @@version --
My SQL SELECT @@version #
--(space)
oracle SELECT * FROM v$version --
Postgre SQL SELECT version() --
' UNION SELECT @@version--