[SWPUCTF 2021 新生赛]easyupload2.0
解题思路:
开启靶机访问

直接开启抓包,然后上传webp的图片(这样就就不需要手动修改MIME),直接修改文件内容,然后修改文件名后缀,发现php后缀提示不行,那就换成别的试试,发现phtml上传成功,直接访问

然后用工具直接连接一下

找一下flag
find / -name "*fl*"

在app目录下有一个flag.php文件 ,直接cat查看一下,成功夺旗!
[LitCTF 2023]导弹迷踪
题目:
你是一颗导弹,你需要,飞到最后!(通过6道关卡就能拿到flag哦~
Flag形式 NSSCTF{}
出题人 探姬
解题思路:
直接开启靶机访问,发现是一个网页游戏,然后题目提示通过六道关卡就能拿到flag,肯定很难,F12看了一下啊,没有什么其他的页面,只有一堆的js文件,然后看了眼别人的wp,思路没问题,的确是js文件,那就一个一个审
<!--== SCRIPTS ==============================================================--> <!-- Kevin Lindsey's 2d geometry SVG library --> <script type="application/javascript" src="lib/kevlindev/2D.js"></script> <script type="application/javascript" src="lib/kevlindev/Path.js"></script> <!-- Game files --> <script type="application/javascript" src="src/base.js"></script> <script type="application/javascript" src="src/util.js"></script> <script type="application/javascript" src="src/missile.js"></script> <script type="application/javascript" src="src/wall.js"></script> <script type="application/javascript" src="src/barrier.js"></script> <script type="application/javascript" src="src/barrierQueue.js"></script> <script type="application/javascript" src="src/game.js"></script> <script type="application/javascript" src="src/hud.js"></script> <script type="application/javascript" src="src/banner.js"></script> <script type="application/javascript" src="src/fog.js"></script> <script type="application/javascript" src="src/main.js"></script>既然出题,那么上面这两个引用的别人的js文件肯定不是重点,直接审计下面的游戏的js文件,因为是通关后才能获得flag,所以我们直接尝试在这几个文件里面搜索flag/NSSCTF,但是都没有结果,要么就是别的思路,要么就是格式不对,那就换一个方法,通关显示flag,没通关肯定也会显示一个内容,然后我们可以定位这段js代码,再去附近查找

这里随便玩一下,发现撞墙后显示QUALIFYING LEVEL,搜索一下看看

我定位不到flag,还定位不到这两个关键词吗,这不就找到了,通过QUALIFYING LEVEL/CLICK TO CONTINUE定位到相关代码,然后找到flag的内容 ,然后以NSSCTF包裹提交就可以了,夺旗成功!
[LitCTF 2023]PHP是世界上最好的语言!!
题目:
探姬坚信PHP是世界上最好的语言,于是她用PHP写了一个小工具 (Flag位于根目录)
Flag形式 NSSCTF{}
出题人 探姬
解题思路:
直接开启靶机访问

没看见什么提示,随便输入一个内容然后抓包试试

看见这个php_code我就觉得这个地方是注入点了,
php代码嘛,直接输入phpinfo();试试

ctrl+f搜一下,看看能不能用系统命令

没有禁用的函数,那就直接用系统命令函数读取根目录下的文件

直接cat输出文件内容

夺旗成功!
[SWPUCTF 2021 新生赛]easyupload1.0
解题思路:
直接开启靶机访问看看

发现这题是这篇笔记第一题的1.0版本,估计过滤没那个严,直接抓包修改,然后上传

文件后缀和内容都没有检查,上传图片,然后抓包修改成php webshell就上传成功了,连接一下

那应该还是在app目录下,直接cat
cat /app/flag.php

不过并没有结束,这不是正确的flag,并且修改成NSSCTF也不对,那么flag不在这里,就只能在环境变量或者phpinfo里面了,重新上传一个文件,然后查看phpinfo的内容

访问后直接搜索flag/NSSCTF关键词

成功夺旗!
[SWPUCTF 2021 新生赛]PseudoProtocols
解题思路:
这个标题有点没看懂,在线翻译一下,发现是伪协议的意思,然后直接开启靶机访问看看

翻译后的意思就是
提示在这里 你能找到 hint.php 吗?,然后url中还有一个wllm的参数,题目都提示了,那就直接尝试伪协议读取这个hint.php文件php://filter/convert.base64-encode/resource=hint.php然后结果base64解码一下
<?php //go to /test2222222222222.php ?>继续,访问这个文件看看
<?php ini_set("max_execution_time", "180"); show_source(__FILE__); include('flag.php'); $a= $_GET["a"]; if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){ echo "success\n"; echo $flag; } ?>这个简单,用data写入就可以了
a=data://text/plain,I want flag

成功夺旗!
[鹤城杯 2021]easy_crypto
因为是按照顺序做题,虽然密码学我不会,但是既然碰上了,并且标注了easy,那就做一下玩玩
解题思路:
开启靶机直接访问,发现是提供的附件,那就直接下载
文件内容:
公正公正公正诚信文明公正民主公正法治法治诚信民主自由敬业公正友善公正平等平等法治民主平等平等和谐敬业自由诚信平等和谐平等公正法治法治平等平等爱国和谐公正平等敬业公正敬业自由敬业平等自由法治和谐平等文明自由诚信自由平等富强公正敬业平等民主公正诚信和谐公正文明公正爱国自由诚信自由平等文明公正诚信富强自由法治法治平等平等自由平等富强法治诚信和谐文件内容就是密文,直接看的wp,发现这是一个编码方式,叫做社会主义核心价值观编码
原理是将原字符串通过UTF-8编码成16进制数据,然后遍历,将其中大于10的数转成 【(11,a-6),(10,a-10)】 随机二选一,然后将社会主义核心价值观的内容从0开始遍历
第一步和第三步都很好理解,中间的这一步大概就是,数据a,转换成(11,a-6)或者转换成(10,a-10),这个是随机选择的
import random while 1: str1 = str(bytes(input('输入要编码的文本:'), encoding='u8'))[2:-1].replace('\\x', '') list1 = [] for f1 in str1: str2 = int(f1, 16) if str2 < 10: list1.append(str2) elif random.random() < 0.5: list1.append(11) list1.append(str2 - 6) else: list1.append(10) list1.append(str2 - 10) str1 = '富强民主文明和谐自由平等公正法治爱国敬业诚信友善' print(list1) str1 = ''.join([str1[f1 << 1] + str1[f1 << 1 | 1] for f1 in list1]) print('编码结果:',str1,'\n'*3)先将内容转换成16进制,然后判断小于10就直接添加到列表,否则判断随机的结果是否小于0.5,小于就添加11和a-6,否则添加10,然后添加a-10,最后循环遍历
所以我们想要解码也很简单,将密文一一对应,转成对应的数字,如果是10或11就按照对应的算法反推结果,最后将16进制数据转成字符串就可以了
while 1: str1 = input('输入要解码的文本:') list1 = ['富强', '民主', '文明', '和谐', '自由', '平等', '公正', '法治', '爱国', '敬业', '诚信', '友善'] list1 = [list1.index(str1[f1 << 1] + str1[f1 << 1 | 1]) for f1 in range(int(len(str1)/2))] a = 0 list2 = [] while a < len(list1): if list1[a] < 10: list2.append(str(list1[a])) elif list1[a] == 10: a += 1 list2.append(hex(list1[a]+10)[2:]) else: a += 1 list2.append(hex(list1[a]+6)[2:]) a += 1 str1 = bytes.fromhex(''.join(list2)).decode('utf-8') print('解码结果:', str1, '\n'*3)参考文献:社会主义核心价值观(编解码)(附py脚本)_价值观解码-CSDN博客
夺旗成功!
[陇剑杯 2021]jwt(问1)
题目:
昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答: 该网站使用了
______认证方式。(如有字母请全部使用小写)。得到的flag请使用NSSCTF{}格式提交。
解题思路:
直接开启环境,不过我在下载附件的时候我仔细看了看题目,采用什么认证方式,刚好标题又提示了jwt,我就想,不会这么巧吧,jwt也是一种方式,这我是知道的,所以我就直接尝试使用NSSCTF包裹结果
NSSCTF{jwt}提交后直接提示我夺旗成功!哈哈,真的是比较取巧的一种方式了,不过该看还是得看,分析一下附件,解压后发现是Wireshark格式的文件,就直接用Wireshark打开了
然后点击分析,点击追踪流,选择http,然后就可以看到所有的http数据包了,然后慢慢翻找

它们都说是这个token的格式看出来是jwt认证,然后我在网上找了一下,算是比较能够理解的一张图片

的确和我们这个数据里面的格式差不多,三个部分,然后用
.连接

随便找了个jwt的网站,的确可以解析,所以的确是jwt认证方式,成功夺旗!
[强网拟态 2021]拟态签到题
解题思路:
开启环境依旧是附件,然后标签页提示了古典密码,打开下载的压缩包查看
ZmxhZ3tHYXFZN0t0RXRyVklYMVE1b1A1aUVCUkNZWEVBeThyVH0=打开文件一看,=号结尾,很明显是base64,直接放到在线网站解密一下
flag{GaqY7KtEtrVIX1Q5oP5iEBRCYXEAy8rT}然后替换一下flag头为NSSCTF的就可以了,夺旗成功!
[SWPUCTF 2021 新生赛]no_wakeup
解题思路:
直接开启环境访问看看

点击问号,高亮显示了代码

直接写php脚本来生成序列化数据
<?php class HaHaHa{ public $admin = "admin"; public $passwd = "wllm"; } $a = new HaHaHa(); $b = serialize($a); echo $b; ?>生成结果
O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}但是直接这么提交会发现wakeup覆盖了这个密码
public function __wakeup(){ $this->passwd = sha1($this->passwd); }想要绕过,我们只需要让对象参数大于原参数数量,比如有两个参数,我们就改为3,有3个就改为4,payload如下
O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

夺旗成功!
[LitCTF 2023]Follow me and hack me
解题思路:
直接开启靶机访问看看

没有提交按钮,那就直接hackbar来提交请求

夺旗成功!
[长城杯 2021 院校组]签到
解题思路:
题目没开,就发现题目中带有一串字符串
5a6d78685a3374585a57786a6232316c5833527658324e6f5957356e5932686c626d64695a544639一眼望去,全是数字+字母,再细看,发现没有10,字母最多也就到f,很明显是16进制,直接16进制解码一下
ZmxhZ3tXZWxjb21lX3RvX2NoYW5nY2hlbmdiZTF9看着没什么规律,但是如果你经验多了,还是能够发现很像base,直接base解码一下

将flag替换NSSCTF提交,夺旗成功!
[NCTF 2018]签到题
解题思路:
还是一样直接开启靶机访问

F12看看,源代码里面没发现什么东西,查看请求,发现响应头里面带有一个参数

带上这个参数再去请求看看,啥也没有,robots.txt也没访问到,那就扫描一下目录看看,不过我不知道为什么没扫描出来,然后这题观察url可以看到默认的页面不是index.php而是secret.php,尝试访问看看,发现直接302跳转了,抓包看看

可以看到响应头里面有一个flag,夺旗成功!
[陇剑杯 2021]webshell(问1)
题目:
单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 黑客登录系统使用的密码是
_____________。。得到的flag请使用NSSCTF{}格式提交。
解题思路:
还是一样,直接下载附件,解压后使用Wireshark查看,直接查看看起来比较像的数据包,我也是别人提示后才知道的,对流量包看下来,登入系统一般都有一下的特征:1.登入成功说明状态码为200;2.用post方式登入;3.一般进入的是login页面

对其进行分析,然后追踪流

可以看到密码是Admin123!@#,用NSSCTF包裹,然后提交
NSSCTF{Admin123!@#}成功夺旗!
[NISACTF 2022]easyssrf
解题思路:
看这标题就知道是ssrf,直接开启题目然后过一遍burpsuite的请求历史

没看见什么东西,但是网站提示让我们curl,那就curl一下它自己看看

提示了,方向没有问题,估计是过滤了,那就换一种方法,之前的SSRF那篇文章有讲
file:///flag用本地协议读取一下,发现提示
都说了这里看不了flag。。但是可以看看提示文件:/fl4gfile:///fl4g

继续,访问这个文件看看

使用file作为参数,然后不能提交带有file的字符串,否则
你败了,就是说不让你用file协议来读取文件,但是file_get_contents本来就是用来读取文件的,所以我们直接传入路径就可以了/flag至于路径是那里,怎么知道的,注释里面写了

夺旗成功!
[LitCTF 2023]Ping
解题思路:
像这种多半就是rce,直接开启题目访问看看

尝试了一下,发现存在过滤,然后弹窗了(前端处理),F12直接查看到过滤规则

管它什么过滤,既然是前端的,那就直接尝试抓包绕过看看

像这种前端的过滤,只要没有签名参数,绕过都是抓包最简单,当然也不是说有签名就无法绕过了,js逆向啊,禁用js之类的,这里直接使用抓包绕过,然后用%0a来rce,没有看到什么文件,那就直接根目录看看,发现有一个flag文件

直接cat读取一下

成功夺旗!










