鱼C论坛

 找回密码
 立即注册
查看: 1260|回复: 8

[已解决]web渗透测试(pikachu xss之href)

[复制链接]
发表于 2023-4-21 16:12:39 | 显示全部楼层 |阅读模式
5鱼币
怎么使用正则表达式限制URL以http或者https开头啊?
最佳答案
2023-4-21 16:12:40
woshijunjun 发表于 2023-4-22 16:28
佬,PHP代码怎么写

这是一个简单的示例,演示了如何在PHP代码中使用正则表达式验证URL以"http"或"https"开头。请参阅以下修改后的代码:
<?php
//...
if(isset($_GET['submit'])){
    if(empty($_GET['message'])){
        $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
    }
    if($_GET['message'] == 'www.baidu.com'){
        $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
    }else {
        // 防御:只允许http,https,其次在进行htmlspecialchars处理
        $url_pattern = "/^(https?:\/\/)/";
        $url = $_GET['message'];
        if (preg_match($url_pattern, $url)) {
            $message = htmlspecialchars($url, ENT_QUOTES);
            $html .= "<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
        } else {
            $html .= "<p class='notice'>请输入以http或https开头的URL</p>";
        }
    }
}
//...
?>

在这段代码中,我们首先使用正则表达式 `^(https?:\/\/)` 验证URL是否以'http'或'https'开头。`preg_match`函数用于测试给定的字符串是否符合正则表达式。如果验证通过,将对URL进行处理并生成一个链接。如果不符合预期,将提示用户输入正确的URL格式。

最佳答案

查看完整内容

这是一个简单的示例,演示了如何在PHP代码中使用正则表达式验证URL以"http"或"https"开头。请参阅以下修改后的代码: 在这段代码中,我们首先使用正则表达式 `^(https?:\/\/)` 验证URL是否以'http'或'https'开头。`preg_match`函数用于测试给定的字符串是否符合正则表达式。如果验证通过,将对URL进行处理并生成一个链接。如果不符合预期,将提示用户输入正确的URL格式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-21 16:12:40 | 显示全部楼层    本楼为最佳答案   
woshijunjun 发表于 2023-4-22 16:28
佬,PHP代码怎么写

这是一个简单的示例,演示了如何在PHP代码中使用正则表达式验证URL以"http"或"https"开头。请参阅以下修改后的代码:
<?php
//...
if(isset($_GET['submit'])){
    if(empty($_GET['message'])){
        $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
    }
    if($_GET['message'] == 'www.baidu.com'){
        $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
    }else {
        // 防御:只允许http,https,其次在进行htmlspecialchars处理
        $url_pattern = "/^(https?:\/\/)/";
        $url = $_GET['message'];
        if (preg_match($url_pattern, $url)) {
            $message = htmlspecialchars($url, ENT_QUOTES);
            $html .= "<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
        } else {
            $html .= "<p class='notice'>请输入以http或https开头的URL</p>";
        }
    }
}
//...
?>

在这段代码中,我们首先使用正则表达式 `^(https?:\/\/)` 验证URL是否以'http'或'https'开头。`preg_match`函数用于测试给定的字符串是否符合正则表达式。如果验证通过,将对URL进行处理并生成一个链接。如果不符合预期,将提示用户输入正确的URL格式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 15:47:29 | 显示全部楼层
在Web渗透测试中,正则表达式可以用于验证输入数据是否符合预期格式,从而限制潜在的安全风险。要使用正则表达式限制URL以'http'或'https'开头,可以使用以下正则表达式:
^(https?:\/\/)

这里的正则表达式解释如下:
- `^`:匹配字符串的开头
- `( )`:捕获组,用于捕获匹配的子字符串
- `https?`:匹配 'http','s' 后面的 `?` 表示 's' 是可选的,所以这部分可以匹配 'http' 或 'https'
- `:\/\/`:匹配 '://' 字符串,'/' 需要使用 '\' 进行转义

此正则表达式可确保给定的字符串以 'http://' 或 'https://' 开头。如果您使用的是JavaScript,可以使用以下示例代码检查URL是否符合预期格式:
function isValidUrl(url) {
  const regex = /^(https?:\/\/)/;
  return regex.test(url);
}

const url = "https://www.example.com";
console.log(isValidUrl(url)); // 输出:true

在其他编程语言中,您可能需要使用相应的正则表达式库或函数来实现类似的功能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 15:48:09 | 显示全部楼层
在Web渗透测试中,正则表达式可以用于验证输入数据是否符合预期格式,从而限制潜在的安全风险。要使用正则表达式限制URL以'http'或'https'开头,可以使用以下正则表达式:
^(https?:\/\/)

这里的正则表达式解释如下:
- `^`:匹配字符串的开头
- `( )`:捕获组,用于捕获匹配的子字符串
- `https?`:匹配 'http','s' 后面的 `?` 表示 's' 是可选的,所以这部分可以匹配 'http' 或 'https'
- `:\/\/`:匹配 '://' 字符串,'/' 需要使用 '\' 进行转义

此正则表达式可确保给定的字符串以 'http://' 或 'https://' 开头。如果您使用的是JavaScript,可以使用以下示例代码检查URL是否符合预期格式:
function isValidUrl(url) {
  const regex = /^(https?:\/\/)/;
  return regex.test(url);
}

const url = "https://www.example.com";
console.log(isValidUrl(url)); // 输出:true

在其他编程语言中,您可能需要使用相应的正则表达式库或函数来实现类似的功能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-22 16:22:18 | 显示全部楼层
<?php
/**
 * Created by runner.han
 * There is nothing new under the sun
 */


$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);

if ($SELF_PAGE = "xss_03.php"){
    $ACTIVE = array('','','','','','','','active open','','','','','','','','','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');

}

$PIKA_ROOT_DIR =  "../../";
include_once $PIKA_ROOT_DIR.'header.php';

$html='';

if(isset($_GET['submit'])){
    if(empty($_GET['message'])){
        $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
    }
    if($_GET['message'] == 'www.baidu.com'){
        $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
    }else {
        //输出在a标签的href属性里面,可以使用javascript协议来执行js
        //防御:只允许http,https,其次在进行htmlspecialchars处理
//        /http[s]{0,1}:\/\/([\w.]+\/?)\S*/
//        ^(http|https)://
//        /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/
这里写PHP代码
        $message=htmlspecialchars($_GET['message'],ENT_QUOTES);
        $html.="<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
    }
}


?>


<div class="main-content">
    <div class="main-content-inner">
        <div class="breadcrumbs ace-save-state" id="breadcrumbs">
            <ul class="breadcrumb">
                <li>
                    <i class="ace-icon fa fa-home home-icon"></i>
                    <a href="xss.php">xss</a>
                </li>
                <li class="active">xss之href输出</li>
            </ul><!-- /.breadcrumb -->

            <a href="#" style="float:right" data-container="body" data-toggle="popover" data-placement="bottom" title="tips(再点一下关闭)"
               data-content="a标签里面的href,img里面的src属性,有什么特殊的么">
                点一下提示~
            </a>


        </div>
        <div class="page-content">

            <div id="xssr_main">
                <p class="xssr_title">请输入一个你常用的网站url地址,我就知道你是什么人</p>
                <form method="get">
                    <input class="xssr_in" type="text" name="message" />

                    <input class="xssr_submit" type="submit" name="submit" value="submit" />
                </form>
                <?php
                echo $html;
                ?>
            </div>

        </div><!-- /.page-content -->
    </div>
</div><!-- /.main-content -->





<?php
include_once $PIKA_ROOT_DIR.'footer.php';

?>
这是代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-22 16:28:06 | 显示全部楼层
isdkz 发表于 2023-4-22 15:48
在Web渗透测试中,正则表达式可以用于验证输入数据是否符合预期格式,从而限制潜在的安全风险。要使用正则 ...

佬,PHP代码怎么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-29 18:46:25 | 显示全部楼层
您可以使用正则表达式的起始符号 ^ 和分组符号 ( ) 对URL进行限制,以匹配HTTP或HTTPS开头的URL。下面是一个示例正则表达式:

python
^(http|https)://.*
在上述正则表达式中, ^ 用于匹配字符串的开头,(http|https) 表示匹配 http 或 https , ://.* 表示匹配 : 后的任意字符(包括 //),最终匹配整个URL的开始部分。

以下是Python代码示例,演示如何使用正则表达式检查URL是否以http或https开头:

python
import re

url = "https://www.example.com/"

pattern = r"^(http|https)://.*"

if re.match(pattern, url):
    print("URL格式正确")
else:
    print("URL格式错误")
这段代码导入了Python的正则表达式模块 re ,将要检查的URL字符串指定为 url 。接着,定义了一个正则表达式模式 pattern ,并使用 re.match() 函数检查URL是否以http或https开头。如果URL格式正确,则输出 “URL格式正确” ,否则输出 “URL格式错误”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-3 10:06:40 | 显示全部楼层
srahe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-6 22:01:04 | 显示全部楼层
web渗透测试(pikachu xss之href)是一种利用<a>标签的href属性来执行js语句的攻击方法12。如果要使用正则表达式限制URL以http或者https开头,可以使用以下的表达式:

^(http|https)://.*

这个表达式的意思是:

^表示匹配字符串的开头
(http|https)表示匹配http或者https中的一个
://表示匹配冒号和两个斜杠
.*表示匹配任意字符任意次
$表示匹配字符串的结尾
这样就可以确保输入的URL以http或者https开头,防止javascript协议的注入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表