SQL注入

目录

    一、数据库基础

    二、SQL注入原理

    三、手工注入

    四、多样化SQL注入

一、数据库基础

        -数据库结构:数据库 test--->表 user--->字段 username--->字段值 admin
        -数据库基础命令:
            -查询数据库:show databases;
            -进入数据库:use sqlpeixun;
            -查看数据库中的表:show TABLES;
            -查询表字段值:SELECT * from person;
            -表插入数据:  insert into person(id, name, age, phone, address)
            values (1,'yang',22,'123232323', 'shanghai');
                    insert into person  values (6,'2zhangsan',99,'66666666', 'hefei');
            -表数据值删除:delete from person_2 where id = 4;  删除id为4的
                    delete from person_2;  删除当前表内容
            -表数据值修改:update person set address='hangzhou'; 
                    update person set address='shanghai' where id = 1;
            
            -where子句:
                >,<,=,!=,&&,||
                SELECT * from person where NAME='yang' && age=23;
            
            -LIKE子句:
                百分号 %:匹配任意多个字符
                    SELECT * from person where NAME like '%an';
                下划线 _:匹配固定一个字符
                    SELECT * from person where NAME like '_an';
            
            -IN 子句
                它限制的是一个集合
                    SELECT * from person where address in ('hangzhou');  满足address为hangzhou
                    SELECT * from person where address not in ('hangzhou'); 不满足
            
            ORDER BY 子句
                查询列值
                ASC 默认升序
                DESC 降序排列
                select * from person order by id desc;
                判断列数
                    满足查询的列数时正常输出,当列数不满足时直接报错。
                select * from person ORDER BY 6;
                
            GROUP BY 子句
                查询返回的结果集进行一个分组
                    SELECT address,name from person group by address,name;  查询字段决定排序
                    
            UNION 联合查询
                UNION的结果集列名与UNION运算符中第一个Select语句的结果集的列名相同。另一个Select语句的结果集列名将被忽略。
                union    union all
                    比如select 'a' union select 'a' 输出就是一行 a
                    比如select 'a' union all select 'a' 输出就是两行 a

    二、SQL注入原理

          1、SQL注入:SQL代码带入数据库中执行--->通过动态参数传递。
            www.***.com.cn/home.php?uid=1
                select * from test where uid=1 
                
            www.***.com.cn/home.php?uid=1 or 1=1
                select * from test where uid=1 or 1=1  
                or 只要有一个条件为‘真’时,结果为真。
            
            -注入形成条件:
                用户能够控制数据的输入
                原本要执行的代码,拼接了用户的输入
            
            -注入流程:
                客户端修改参数--->应用--->参数传递到SQL命令中,无过滤--->解析器进行解析(执行语句)--->返回应用(返回到客户端能看到)
            
            -注入危害:
                数据库信息泄露:数据库中存放的用户的隐私信息的泄露。
                网页篡改:通过操作数据库对特定网页进行篡改。
                网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
                数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
                服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
                破坏硬盘数据,瘫痪全系统。
                一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。
        
        2、注入分类
            -数字型
                参数传递数字
            -字符型
                参数传递字符串
            
        3、注入点位置
            -请求方式:
                GET:直接在地址栏中显示出来的传输传递。
                    
                POST: 通过表单传递的方式,例如:登录,留言,存在输入框的
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会说ABC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值