鱼C论坛

 找回密码
 立即注册
查看: 860|回复: 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"开头。请参阅以下修改后的代码:

  1. <?php
  2. //...
  3. if(isset($_GET['submit'])){
  4.     if(empty($_GET['message'])){
  5.         $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
  6.     }
  7.     if($_GET['message'] == 'www.baidu.com'){
  8.         $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
  9.     }else {
  10.         // 防御:只允许http,https,其次在进行htmlspecialchars处理
  11.         $url_pattern = "/^(https?:\/\/)/";
  12.         $url = $_GET['message'];
  13.         if (preg_match($url_pattern, $url)) {
  14.             $message = htmlspecialchars($url, ENT_QUOTES);
  15.             $html .= "<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
  16.         } else {
  17.             $html .= "<p class='notice'>请输入以http或https开头的URL</p>";
  18.         }
  19.     }
  20. }
  21. //...
  22. ?>
复制代码


在这段代码中,我们首先使用正则表达式 `^(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"开头。请参阅以下修改后的代码:

  1. <?php
  2. //...
  3. if(isset($_GET['submit'])){
  4.     if(empty($_GET['message'])){
  5.         $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
  6.     }
  7.     if($_GET['message'] == 'www.baidu.com'){
  8.         $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
  9.     }else {
  10.         // 防御:只允许http,https,其次在进行htmlspecialchars处理
  11.         $url_pattern = "/^(https?:\/\/)/";
  12.         $url = $_GET['message'];
  13.         if (preg_match($url_pattern, $url)) {
  14.             $message = htmlspecialchars($url, ENT_QUOTES);
  15.             $html .= "<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
  16.         } else {
  17.             $html .= "<p class='notice'>请输入以http或https开头的URL</p>";
  18.         }
  19.     }
  20. }
  21. //...
  22. ?>
复制代码


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

使用道具 举报

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

  1. ^(https?:\/\/)
复制代码


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

此正则表达式可确保给定的字符串以 'http://' 或 'https://' 开头。如果您使用的是JavaScript,可以使用以下示例代码检查URL是否符合预期格式:

  1. function isValidUrl(url) {
  2.   const regex = /^(https?:\/\/)/;
  3.   return regex.test(url);
  4. }

  5. const url = "https://www.example.com";
  6. console.log(isValidUrl(url)); // 输出:true
复制代码


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

使用道具 举报

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

  1. ^(https?:\/\/)
复制代码


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

此正则表达式可确保给定的字符串以 'http://' 或 'https://' 开头。如果您使用的是JavaScript,可以使用以下示例代码检查URL是否符合预期格式:

  1. function isValidUrl(url) {
  2.   const regex = /^(https?:\/\/)/;
  3.   return regex.test(url);
  4. }

  5. const url = "https://www.example.com";
  6. console.log(isValidUrl(url)); // 输出:true
复制代码


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

使用道具 举报

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


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

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

  9. }

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

  12. $html='';

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


  30. ?>


  31. <div class="main-content">
  32.     <div class="main-content-inner">
  33.         <div class="breadcrumbs ace-save-state" id="breadcrumbs">
  34.             <ul class="breadcrumb">
  35.                 <li>
  36.                     <i class="ace-icon fa fa-home home-icon"></i>
  37.                     <a href="xss.php">xss</a>
  38.                 </li>
  39.                 <li class="active">xss之href输出</li>
  40.             </ul><!-- /.breadcrumb -->

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


  45.         </div>
  46.         <div class="page-content">

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

  51.                     <input class="xssr_submit" type="submit" name="submit" value="submit" />
  52.                 </form>
  53.                 <?php
  54.                 echo $html;
  55.                 ?>
  56.             </div>

  57.         </div><!-- /.page-content -->
  58.     </div>
  59. </div><!-- /.main-content -->





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

  62. ?>
复制代码

这是代码
想知道小甲鱼最近在做啥?请访问 -> 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-4-28 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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