zoukankan      html  css  js  c++  java
  • SQL注入之Sqli-labs系列第十七关(UPDATA– 基于错误– 单引号– 字符型)

    开始挑战第十七关(Update Query- Error based - String)

    首先介绍下update的用法:

      作用:Update 语句用于修改表中的数据。
      语法:UPDATE 表名称SET 列名称= 新值WHERE 列名称= 某值
      例句:修改users 表中名为inputuser 的数据
      UPDATE users SET password = inputpass WHERE username = inputuser
      注:其中“SET 列名称= 新值”新值可以为逻辑运算的结果(True or False)

    这里自己创建了表来实际演示下:

    下面我们使用update将宋江chinese改变成100,看演示:

    多个值修改,

    接下来看下updatexml这个函数,一直网上都说的很模糊,都只是给的payload:and (updatexml(1,concat(0x5c,version(),0x5c)),1),这里只看得出来需要三个参数,但是参数是什么意思缺一无所知,我们只能通过help来查看

    从UpdateXML(xml_target, xpath_expr, new_xml)看出

    第一个参数是目标是针对于xml文档

    第二参数是xpath的表达,这里可以看下xpath教程: http://www.w3school.com.cn/xpath/

     第三个参数是将xpath表达式转换成什么,也就是替换查找到的符合条件的数据

    以上看了下,表示还是有些懵逼。

    那就来按照他的方式实例玩玩是怎么回事

    (1)先来利用第一条  UpdateXML('<a><b>ccc</b><d></d></a>', '/a', '<e>fff</e>') AS val1;可以看出将第一个参数的内容装换为了<e>fff</e>

    是不是没看懂,为什么会这样,我把内容拿出来分析

    (2)同样的第二条UpdateXML('<a><b>ccc</b><d></d></a>', '/b', '<e>fff</e>') AS val2;可以看出将第一个参数的内容装换为了<e>fff</e>,但是由于查找方式是从第一个点开始查询,这里直接跳过了从第二开始查询,所以没有查询到,看下面的说明

     

     这样一来使用//就可以随便查询了,不会考虑节点的位置问题,其他的就依次内推

    函数讲完了,我们就开始看注入了, 先看看源代码

    再看sql语句,不需要任何的闭合操作等

    这样一来,我们就可以直接开搞,uname不能下手,就直接在password上下文章,直接上updatexml payload爆信息

    下面就直接获取表名

    字段名

    获取数据,由于使用一层select语句出现报错,就再加了一层

     

  • 相关阅读:
    String的equals和hashCode方法
    查看oracle中表的索引
    初识RESTful
    linux安装字体库(simSun为例)
    排序之快排(JS)
    面向对象的三个基本特征 和 五种设计原则
    排序之希尔排序(JS)
    关于正则表达式
    Oracle 表分区介绍与使用
    一个复杂关联的sql
  • 原文地址:https://www.cnblogs.com/AmoBlogs/p/8673748.html
Copyright © 2011-2022 走看看