0X01

打开题目

0X01_第1张图片

 点了几下跳出一个新的页面

0X01_第2张图片

 点击secret

0X01_第3张图片

 在上一个页面查看源代码,出现action.php然后点击之后就会在地址栏里面出现end.php

 抓包看看,出现secr3t.php

0X01_第4张图片

 huidao开始的页面,访问看看

0X01_第5张图片

这是一个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

两个都是可以的

 0X01_第6张图片0X01_第7张图片

 web萌新赛

源码里面出现了system

在Linux中可以使用“;”隔离不同的语句(分号做出隔离)

url=;ls;

url=;cat flag;

[SWPUCTF 2022 新生赛]js_sign

先查看源代码,出现base,解密之后提示是敲击码

0X01_第8张图片

要记得除去空格,没有出掉空格是不完整的

0X01_第9张图片

[SWPUCTF 2022 新生赛]xff

猜测是XFF伪造,burp抓包然后伪造

0X01_第10张图片

说明必须从主页跳转,Referer伪造

0X01_第11张图片

需要了解一下这两个伪造

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是比较安全,判断是单引号闭合

0X01_第12张图片

根据报错信息说明union和空格都被过滤了

nss=1' union select 1,2,3;#

0X01_第13张图片

union可以进行双写绕过,空格可以用/**/进行绕过

nss=2'/**/ununionion/**/select/**/1,2,3;#

0X01_第14张图片

[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

提示有逆向,就先查看一下有没有壳

0X01_第15张图片

 64位,操作系统是ubantu的,再进IDAshift加上12

0X01_第16张图片

 base解一下

0X01_第17张图片

对逆向还是不熟悉,以前也没有怎么了解过IDA这个工具。

在 IDA 中可以通过快捷键 F5 把某个函数直接生成为 C 语言代码,这样做在某些时候可以让我们分析代码更方便。虽然这样直接生成得到的C 语言代码的可读性不是很强,并且可能还会忽略 IDA 没有识别到的指令,但是解题的时候可以让你更快的理解意思,所以对于题目中要分析的文件,都可以直接按f5 生成伪代码。除了F5 ,也可以使用 tab 键来切换汇编和伪码

shift+f12

列出所有字符串。这个所有字符串不只是指定义的赋过值的字符串,还有包括在一些输入输出语句的提示字符串。

[SWPUCTF 2023 秋季新生赛]

0X01_第18张图片

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!!!

页面回显

0X01_第19张图片

 提示用蚁剑连接,Nss

最后在根目录下找到

0X01_第20张图片

 代码审计之后我们就是跟着代码走,再尝试绕过一些函数,最终拿到我们想要的答案

[SWPUCTF 2023 秋季新生赛]ez_talk

开了之后是文件上传,先上传简单的一句话木马

0X01_第21张图片

mime忘记修改,jpeg,应该是页面回显成功了,因为刚刚看到图片渲染没有页面回显内容

0X01_第22张图片

 0X01_第23张图片

 命令执行zxc=system('cat /flag');就可以了

你可能感兴趣的:(web安全,笔记)