小白Ctfer 日常做点题

01攻防世界ics-06

https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=1&id=4920&page=1
这题 表面特别吓人
实际上可以进入报表中心
在这里插入图片描述
进入报表中心后 仔细观察url发现有个参数
思考了半天查了题解(丢人)
这题的做法是 直接爆破url(非常灵异 没啥技术可言)
用python代码弄出1-1w的数字
然后粘到爆破模块里开始爆破
排序一下长度发现有一个不是1866的 那个id就是有问题的

在这里插入图片描述

直接向url输入对应的id值即可拿到flag
在这里插入图片描述

02 种族歧视

分值: 300
小明同学今天访问了一个网站,竟然不允许中国人访问!太坑了,于是小明同学决心一定要进去一探究竟!
http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php
在这里插入图片描述
抓个包改一下语言(我直接改成哑巴(神秘)) 被当成外国人 就能拿到flag了
(其实我发现瞎填假装自己是外星人也可在这里插入图片描述

03 key究竟在哪里呢?

分值: 200
上一次小明同学轻松找到了key,感觉这么简单的题目多无聊,于是有了找key的加强版,那么key这次会藏在哪里呢?
抓包 然后重发 在响应里发现了key
http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php
在这里插入图片描述

04 key又找不到了

分值: 350
小明这次可真找不到key去哪里了,你能帮他找到key吗?
http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/index.php
点击超链接跳转到没有key的界面抓包
重发后得到提示 根据提示修改url拿到key
在这里插入图片描述

05 冒充登陆用户

分值: 200
小明来到一个网站,还是想要key,但是却怎么逗登陆不了,你能帮他登陆吗?
http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php
这题抓包 把cookie的login改成1发送即可在这里插入图片描述

06 Bugku 网站被黑

http://123.206.87.240:8002/webshell/
先用御剑扫描后台 发现可以进shell.php
在这里插入图片描述
进入后发现需要输入密码

然后用burp用默认字典爆破密码 成功黑入√
实战中常用 但其实没技术含量

07 Bugku flag在index里

http://123.206.87.240:8005/post/
点进去超链接
注意到url地址 http://120.24.86.145:8005/post/index.php?file=show.php
这是一个典型的文件包含漏洞 file关键字是提示
ip+/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
然后得到的字符base64解码即可

下面解释一下
php://是一种协议名称
php://filter/是一种访问本地文件的协议
/read=convert.base64-encode/表示读取的方式是base64编码
resource=index.php表示目标文件为index.php
通过传递这个参数可以得到index.php的源码
原理就是
源码中有include函数
表示从外部引入php文件并执行 如果执行不成功 就返回文件的源码

而include的内容是由用户控制的 所以通过我们传递的file参数 include()函数会引入了index.php的base64编码格式
因为是base64编码格式 函数看不懂base64乱七八糟的东西
所以执行不成功 返回源码
所以我们得到了源码的base64格式 解码即可
如果不进行base64编码传入 就会直接执行 得不到源码

08 Bugku 头等舱

http://123.206.87.240:9009/hd.php
乍一看确实啥也没有
传统艺能抓个包 重发 结果发现响应里有flag(类似的题似乎做过)
水题

09 Bugku 管理员系统

http://123.206.31.85:1003/
这题 抓个包 发现本机ip不让访问
输入用户名为admin
密码输入为源码底部base64解码的密码
联想到攻防世界说可以伪造XFF
我就直接伪造XFF为127.0.0.1 假装是本地
发包拿到flag

010 Bugku WEB4

http://123.206.87.240:8002/web4/
先查看源码

<html>
<title>BKCTF-WEB4</title>
<body>
<div style="display:none;"></div>
<form action="index.php" method="post" >
看看源代码?<br>
<br>
<script>
var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));
</script>

<input type="input" name="flag" id="flag" /> 
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

我发现 这些都可以hex解码
仔细观察后发现

eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));

这暗示字符串拼接 我可以用p1 中间那段 和p2拼接在一起
解码得到

function checkSubmit()
{var a=document.getElementById("password");if("undefined"!=typeof a)
{if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
return!0;alert("Error");a.focus();return!1}}
document.getElementById("levelQuest").onsubmit=checkSubmit;

提交67d709b2b54aa2aa648cf6e87a7114f1拿到flag

011 [HCTF 2018]WarmUp

<?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\" />";
    }  
?>

代码审计
发现可以康康hint.php
进去康康发现提示在这里插入图片描述

if (! empty($_REQUEST['file'])  //$_REQUEST['file']值非空
        && is_string($_REQUEST['file'])  //$_REQUEST['file']值为字符串
        && emmm::checkFile($_REQUEST['file'])  //能够通过checkFile函数校验
    ) {
        include $_REQUEST['file'];  //包含$_REQUEST['file']文件
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
        //打印滑稽表情
    } 

要满足三个条件

1.值为非空
2.值为字符串
3.能够通过checkFile()函数校验

再来看checkfile函数

public static function checkFile(&$page)//将传入的参数赋给$page
    {
        $whitelist = ["source"=>"source.php","hint"=>"hint.php"];//声明$whitelist(白名单)数组
        if (! isset($page) || !is_string($page)) {//若$page变量不存在或非字符串
            echo "you can't see it";//打印"you can't see it"
            return false;//返回false
        }
 
        if (in_array($page, $whitelist)) {//若$page变量存在于$whitelist数组中
            return true;//返回true
        }
 
        $_page = mb_substr(//该代码表示截取$page中'?'前部分,若无则截取整个$page
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;
        }
 
        $_page = urldecode($page);//url解码$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语句中
先进行url解码再截取
因此我们可以将?经过两次url编码
在服务器端提取参数时解码一次
checkFile函数中解码一次
(’?‘两次编码值为’%253f’)构造url:
经过各种审计(其实我没整明白 我只知道?会被解码两次 所以需要编码两次 变成%253以绕过判断 最后通过神奇目录穿透拿到答案)
source.php?file=source.php%253f…/…/…/…/…/ffffllllaaaagggg

012 [极客大挑战 2019]Havefun

在这里插入图片描述
我以为答案在注释里(想多了)
实际上 如果把dog传值给cat提交上去
会出现另一个答案()
这题 没啥说的

013 [极客大挑战 2019]Secret File

在这里插入图片描述
开幕雷击
在这里插入图片描述
查看源码发现提示 访问了一下那个archive的文件
在这里插入图片描述
点一下在这里插入图片描述

啥也没有

在这里插入图片描述

点一下再抓包
在这里插入图片描述

发现了这个
在这里插入图片描述
直接访问不行
在这里插入图片描述
拿伪协议绕过 base64解码后 得到flag 并发现他想要女友(啧)
在这里插入图片描述

014 [ACTF2020 新生赛]Include

在这里插入图片描述
我DNA直接起反应了
当场一套伪协议操作 base64编码flag文件丢过去base64解码拿flag

015 [护网杯 2018]easy_tornado

这题我真的不会
查了也理解了半天
md5在线编码各种翻车 最后只好用py脚本跑了一遍
三个文件分别点开
在这里插入图片描述
目的很清晰
我们需要知道cookie那个文件还有filename 然后进行加密操作
现在filename已经知道了
cookie的话 就要搞模板注入了

msg={{handler.settings}}

dalao直接这样做了
这个叫ssti攻击 老实说我完全不懂 反正可以靠这个办法拿到cooke那个文件
加密后
给filehash传值 文件名写flllll那个名字
千万千万别在文件名后加.txt
我就是这样被卡到吐血
然后操作完就拿到flag了

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值