嘿伙计," />

[BUUCTF][WEB][ACTF2020 新生赛]Upload 1

buuctf,web,actf2020,新生,upload · 浏览次数 : 72

小编点评

**前端文件检查代码解析:** ```html ``` **代码解析:** 1. **`form`标签**定义了一个表单,并设置**`enctype`**属性为**`multipart/form-data`**,用于处理文件上传。 2. **`input`标签**定义了文件上传的输入框,并指定**`name`**属性为**`upload_file`**。 3. **`input`标签**定义了一个隐藏的**`input`**框,并设置其**`type`**属性为**`file`**,用于选择文件。 4. **`input`标签**定义了一个**`submit`**按钮,并设置其**`name`**属性为**`submit`**,用于提交表单。 5. **`onsubmit`事件**在表单提交时触发**`checkFile()`**函数。 6. **`checkFile()`函数**以下步骤进行文件检查: - 获取**`input`**框中**`file`**的值。 - 检查**`file`**是否存在空值。 - 定义允许上传的文件类型**`allow_ext`**。 - 从**`file`**中提取上传文件的**`ext_name`**。 - 检查**`ext_name`**是否在**`allow_ext`**中。 - 如果文件类型不合法,提示用户。 7. 如果文件类型合法,则检查文件名长度是否符合要求。 8. 如果文件名合法,则检查文件类型是否与允许类型匹配。 9. 如果验证通过,则将文件名称改为**`shell.jpg`**,并将文件名改回原始格式。 10. 最后,将文件上传成功后,通过**burpsuite**拦截请求,将文件重命名为**`shell.phtml`**,并将其上传到服务器。 **结果:** 当用户在表单中选择并上传一张jpg、png或gif文件时,会触发前端检查逻辑,并将文件上传成功后重命名为**`shell.phtml`**。

正文

打开靶机url,右键查看网页源代码
其中有一段代码
<div class="light"><span class="glow">
			<form enctype="multipart/form-data" method="post" onsubmit="return checkFile()">
				嘿伙计,你发现它了!
                <input class="input_file" type="file" name="upload_file"/>
                <input class="button" type="submit" name="submit" value="upload"/>
            </form>
      </span><span class="flare"></span><div>
这里看出来是考察的前端文件检查,F12,看一下js的代码,发现一个main.js
    function checkFile() {
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
            alert("请选择要上传的文件!");
            return false;
        }
        //定义允许上传的文件类型
        var allow_ext = ".jpg|.png|.gif";
        //提取上传文件的类型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判断上传文件类型是否允许上传
        if (allow_ext.indexOf(ext_name) == -1) {
            var errMsg = "该文件不允许上传,请上传jpg、png、gif结尾的图片噢!";
            alert(errMsg);
            return false;
        }
    }
从这段源码可知,前端在检查上传的文件必须是jpg、png、gif,这个好搞定,先将一句话木马命名为jpg,然后可以借助burpsuite,拦截请求,然后将名称改回即可
将之前(上一篇)的shell.phtml 重命名为 shell.jpg , 上传,通过burpsuite 拦截,再将名称改回 shell.phtml

上传成功,显示

Upload Success! Look here~ ./uplo4d/bd914ca4997d34857501cefab0064162.phtml
构造一下url,蚁剑链接,成功获得flag
http://86f689a5-c818-44ac-a6f9-423e84064daa.node4.buuoj.cn:81/uplo4d/bd914ca4997d34857501cefab0064162.phtml

与[BUUCTF][WEB][ACTF2020 新生赛]Upload 1相似的内容:

[BUUCTF][WEB][ACTF2020 新生赛]Upload 1

打开靶机url,右键查看网页源代码 其中有一段代码 嘿伙计,

[BUUCTF][Web][ACTF2020 新生赛]Include 1

打开靶机对应的url 显示一个tips 超链接 点击访问超链接,对应Url为 http://469398f2-5677-4270-a4a4-55c5e4a7504a.node4.buuoj.cn:81/?file=flag.php 显示信息Can you find out the flag, 右键查

[BUUCTF][Web][ACTF2020 新生赛]Exec 1

打开靶机对应url 显示可以输出ip 来进行ping操作 尝试试一下是否有命令注入的可能 127.0.0.1|ls 果然可以,输出结果 index.php PING 127.0.0.1 (127.0.0.1): 56 data bytes 按照套路估计是在根目录,试一下 127.0.0.1|ls /

[BUUCTF][Web][极客大挑战 2019]EasySQL 1

打开靶机对应的url 界面显示需要输入账号和密码 分别在两个输入框尝试加单引号尝试是否有sql注入的可能,比如 123' 发现两个框可以注入,因为报了个错误信息 You have an error in your SQL syntax; check the manual that correspon

[BUUCTF][Web][HCTF 2018]WarmUp 1

这题已经标识为php 代码审计题,那么需要搞到源码才行 打开靶机对应的url,展示的是一张笑脸图片 右键查看网页源代码

[BUUCTF][Web][极客大挑战 2019]Havefun 1

打开靶机的URL,看到一个页面 右键查看源代码,看到有用信息 ...

[BUUCTF][Web][SUCTF 2019]EasySQL 1

这一题有点蛋疼,比较难顶 看了别人的write up 也很难get到解题思路,感觉必须要拿到源码进行审计才能解 大佬们猜后端是这么写的 select $_POST['query'] || flag from Flag; 这里使用或来拼接字段名称 那么输入*,1, 用1 || flag得到1,这样拼接

[BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1 显示 /?ip= PING 127.0.0.1 (127.0.0.1): 56 data byt

[BUUCTF][Web][极客大挑战 2019]Secret File 1

打开靶机对应的url 右键查看网页源代码,查看到一个访问路径 /Archive_room.php 构造url访问一下 http://3bfaebad-fdfa-4226-ae0a-551f0228becb.node4.buuoj.cn:81/Archive_room.php 右键再次查看源代码,有一

[BUUCTF][Web][极客大挑战 2019]LoveSQL 1

打开靶机url,页面显示有两个输入框,框中输入123',发现两个框都有sql注入问题 爆出一下错误 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server versi