信息安全之SQL注入

(此为课堂笔记整理,方便日后学习)

一. SQL注入攻击原理

原因分析:

      由于程序中对用户输入检查不严格,导致用户提交的非法数据被当作SQL语句的一部分来执行(即改变了系统后台原有的SQL语句结构),从而使攻击者获得某些他想得知的数据。

目标:

      借Web应用的”刀“来攻击服务器数据库或操作系统


二. SQL注入攻击类型

   A. 字符串内联注入
   B. 数字值内联注入
   C. 终止式注入:利用注释符

   D. 搜索型注入:利用搜索关键字


A. 字符串内联注入:

      程序员考虑的场景:
                           Username: admin
                           Password: p@$$w0rd

                           SELECT COUNT(*) FROM Users WHERE username='admin' and password= 'p@$$w0rd'

                           

      程序员未考虑的场景:

                           Username: admin' and 1=1 OR ‘1’=‘1

                           Password: 1

                           SELECT COUNT(*)FROM Users WHERE username=‘admin' and 1=1 OR 1’=‘1 and password='1'

                           

B. 数字值内联注入:

        常用的判断SQL注入攻击方法:在数字型的参数后跟上假条件或真条件
        http://.../list.php?uid=45 and 1=1   页面返回正确

        http://.../list.php?uid=45 and 1=X   页面返回错误

C. 终止时注入:

        终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。

       常用的向数据库添加注释的语法如下:
           1、--:用于单行注释,该符号后的SQL语句将不再被执行

           2、/*    */用于多行注释,处于该符号中间的SQL语句不会被执行


三. SQL注入攻击常见的方法:

         SQL注入工具:(SQLMAP、BurpSuite等)
         手工注入:
                a. 联合查询

                b. SQL盲注


四. SQL注入流程:

        (1)找到带参的URL或表单
        (2)判断是否存在注入
        (3)通过SQL注入语句实施注入攻击:
                       猜解表名;猜解列名;猜解内容

猜你喜欢

转载自blog.csdn.net/weixin_42322501/article/details/80496380