ctfshow-WEB AK赛-web1_观字

题目:

<?php

#flag in http://192.168.7.68/flag
if(isset($_GET['url'])){
    $url = $_GET['url'];
    $protocol = substr($url, 0,7);
    if($protocol!='http://'){
        die('仅限http协议访问');
    }
    if(preg_match('/\.|\;|\||\<|\>|\*|\%|\^|\(|\)|\#|\@|\!|\`|\~|\+|\'|\"|\.|\,|\?|\[|\]|\{|\}|\!|\&|\$|0/', $url)){
        die('仅限域名地址访问');
    }
    system('curl '.$url);
}

有个注释,是写的flag在 http://192.168.7.68/flag 这个地址下,有一个url参数可以传参。

第一个限制是前七位必须是 http://

第二个是正则过略,把.过滤了。这就很难办了,因为地址中肯定是有.

就肯定需要来绕过,首先想到的是ip地址编码 ip地址转十六进制

在这里插入图片描述

http://192.168.7.68/flag就可以写成http://C0A80744/flag

在这里插入图片描述

还是被过滤了,后来发现,在过滤的众多字符中,把0也过滤了

但是IP地址转十进制、十六进制、二进制中都有0,这个想法走不通了

后来在一篇文章中发现在url中 .可以用替代

那么就是可以写成http://192。168。7。68/flag

在这里插入图片描述
果然,得到flag

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值