打开题目
点了几下跳出一个新的页面
点击secret
在上一个页面查看源代码,出现action.php然后点击之后就会在地址栏里面出现end.php
抓包看看,出现secr3t.php
huidao开始的页面,访问看看
这是一个PHP脚本,以HTML标签开头。该脚本包含了一个PHP函数 highlight_file(__FILE__),该函数可以高亮正在执行的PHP代码。
然后,该脚本设置了 error_reporting(0),以关闭错误报告。
该脚本通过 $_GET 超全局变量接收一个文件名作为参数。然后它检查文件名是否包含以下任何字符串: "../"、"tp"、"input" 或 "data"。如果包含,则脚本会打印 "Oh no!" 并退出。这是一种安全措施,用于防止目录遍历攻击并保护服务器免受恶意文件包含的攻击。
也就是说input和data都不可以使用了,然后就用php://filter
php://filter/convert.base64-encode/resource=目标文件
如果文件名通过了安全检查,该脚本将使用 include 语句包含该文件。被包含的文件的内容将作为PHP代码执行。
标志存储在名为 "flag.php" 的文件中,该文件可能由此脚本包含。
secr3t.php的后面加上?file=php://filter/convert.base64-encode/resource=flag.php
?file=php://filter/read=convert.base64-encode/resource=flag.php
两个都是可以的
web萌新赛
源码里面出现了system
在Linux中可以使用“;”隔离不同的语句(分号做出隔离)
url=;ls;
url=;cat flag;
[SWPUCTF 2022 新生赛]js_sign
先查看源代码,出现base,解密之后提示是敲击码
要记得除去空格,没有出掉空格是不完整的
[SWPUCTF 2022 新生赛]xff
猜测是XFF伪造,burp抓包然后伪造
说明必须从主页跳转,Referer伪造
需要了解一下这两个伪造
X-Forwarded-For
是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址。在代理转发及反向代理中经常使用X-Forwarded-For 字段。
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段,通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip
Referer
Referer 是 HTTP 请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.sojson.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:
Referer=https://www.sojson.com
比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的,因为这是一个“凭空产生”的 HTTP 请求,并不是从一个地方链接过去的。
[SWPUCTF 2022 新生赛]ez_sql
打开 提示说要用相对安全的方式传参,post是比较安全,判断是单引号闭合
根据报错信息说明union和空格都被过滤了
nss=1' union select 1,2,3;#
union可以进行双写绕过,空格可以用/**/进行绕过
nss=2'/**/ununionion/**/select/**/1,2,3;#
[SWPUCTF 2021 新生赛]我flag呢?
词频统计,进行由大到小的顺序。
from collections import Counter
f = open('附件.txt','r')
str=f.read()
str1=''
for i in range(len(str)):
if str[i]=="{":
str1+=str[i+1:i+17].lower()
cla=Counter(str1)
flag=cla.most_common()
print(flag)
for i in range(len(flag)):
print((flag[i][0]),end='')
f.close()
但是我们会发现最后面的t只统计了一次,删掉之后就发现提交正确了,NSSCTF{81e57d2bc90364}
[SWPUCTF 2022 新生赛]base64
提示有逆向,就先查看一下有没有壳
64位,操作系统是ubantu的,再进IDAshift加上12
base解一下
对逆向还是不熟悉,以前也没有怎么了解过IDA这个工具。
在 IDA 中可以通过快捷键 F5 把某个函数直接生成为 C 语言代码,这样做在某些时候可以让我们分析代码更方便。虽然这样直接生成得到的C 语言代码的可读性不是很强,并且可能还会忽略 IDA 没有识别到的指令,但是解题的时候可以让你更快的理解意思,所以对于题目中要分析的文件,都可以直接按f5 生成伪代码。除了F5 ,也可以使用 tab 键来切换汇编和伪码
shift+f12
列出所有字符串。这个所有字符串不只是指定义的赋过值的字符串,还有包括在一些输入输出语句的提示字符串。
[SWPUCTF 2023 秋季新生赛]
sj
首先get传参,先传入五个参数,让后出现三个等号,强比较,数组进行绕过
接下来可以看到file_get_contents
,这个函数的内容就是显示文件内容,可以利用data
协议传入数据流
?md5_1[]=1&md5_2[]=2&sha1_1[]=3&sha1_2[]=4&new_player=data://text/plain,Welcome to NSSCTF!!!
页面回显
提示用蚁剑连接,Nss
最后在根目录下找到
代码审计之后我们就是跟着代码走,再尝试绕过一些函数,最终拿到我们想要的答案
[SWPUCTF 2023 秋季新生赛]ez_talk
开了之后是文件上传,先上传简单的一句话木马
mime忘记修改,jpeg,应该是页面回显成功了,因为刚刚看到图片渲染没有页面回显内容
命令执行zxc=system('cat /flag');就可以了