1、 curl_exec()
<?php// 创建一个cURL资源$ch = curl_init();// 设置URL和相应的选项curl_setopt($ch, CURLOPT_URL, "http://www.w3cschool.cc/");curl_setopt($ch, CURLOPT_HEADER, 0);// 抓取URL并把它传递给浏览器curl_exec($ch);// 关闭cURL资源,并且释放系统资源curl_close($ch);?> 说白了,这个函数的作用就是获取一个网页 记住这个函数,这个函数的利用方式一般靠gopher,file,dict三种协议
接下来看皮卡丘靶场ssrf实验
主要看引发问题的代码
攻击者对于参数url可控,并且交给curl_exec()执行且返回给前端
file://协议读取敏感文件
dict://协议探测端口
可以通过bp抓包,将端口设置为变量,模式选择Sniper
设置攻击载荷
2、file_get_content
这个函数的作用是把整个文件读入一个字符串中,这篇文章有介绍这个函数和curl的区别:https://www.jianshu.com/p/39acc2d9ab4a
file参数可控,并且 file_get_content()函数读取后,返回前端
同样可以file://读取本地文件
php://filter/读php源代码
?file=php://filter/read=convert.base64-encode/resource=../../../phpinfo.php
http协议请求内网资源
我在hosts文件设置的是81端口
ftp、dict协议不可行