CTF刷题记录Buuctf-N1BOOK-SSRF

**

N1BOOK-SSRF

**
一、解题思路
在这里插入图片描述
1.查看页面源代码,发现了challenge.php
在这里插入图片描述
在这里插入图片描述
2.在进行ssrf攻击之前,先进行一波代码审计

在这里插入图片描述
在这里插入图片描述

3.根据题目要求,访问本机的flag.php,本道题是用了白名单的方式,通过parse_url()后分解出来的IP不能为白名单内的IP,所以我们主要需要绕过parse_url(),在线php调试
在这里插入图片描述

4.构造的payload为:http://fghkk@127.0.0.1:80@baidu.com/flag.php
在这里插入图片描述
5.当我使用get传参的方式时,发现没有任何的回显,那使用POST的传参试试
在这里插入图片描述

在这里插入图片描述
6.成功得到flag。

7.另外的一种方式,直接使用POST的方式,直接得到flag.
在这里插入图片描述
二、知识点
1.SSRF(Server-side Request Forge,服务端请求伪造)。
2.用攻击者构造的攻击链接穿个服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。
3.正则匹配
KaTeX parse error: Undefined control sequence: \/ at position 42: …^(http|https)?:\̲/̲\/.*(\/)?.*/’, u r l ) ; / / 判 断 返 回 的 url); //判断返回的 url);//url值是0次(不匹配)或是1
//^从头开始匹配
//?匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的
//()标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,使用(和)
//.匹配除换行符\n之外的任何单字符。要匹配.,请使用.
//匹配前面的子表达式零次或多次。要匹配字符,请使用*
//$:从字符串末尾进行匹配

h o s t n a m e = hostname= hostname=url_parse[‘host’];
//hostname为主机名

i p = g e t h o s t b y n a m e ( ip=gethostbyname( ip=gethostbyname(hostname);
//通过域名获取IP地址

i n t i p = i p 2 l o n g ( int_ip=ip2long( intip=ip2long(ip);
//ip2long:将IPV4的ip地址(以小数点分隔形式)转换为int

参考链接:https://www.icode9.com/content-4-874272.html

		  [https://www.jb51.net/shouce/php5/zh/function.ip2long.html](https://www.jb51.net/shouce/php5/zh/function.ip2long.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值