bWAPP----HTML Injection - Stored (Blog)
HTML Injection - Stored (Blog)
界面

1 <div id="main">
2
3 <h1>HTML Injection - Stored (Blog)</h1>
4
5 <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">
6
7 <table>
8
9 <tr>
10
11 <td colspan="6"><p><textarea name="entry" id="entry" cols="80" rows="3"></textarea></p></td>
12
13 </tr>
14
15 <tr>
16
17 <td width="79" align="left">
18
19 <button type="submit" name="blog" value="submit">Submit</button>
20
21 </td>
22
23 <td width="85" align="center">
24
25 <label for="entry_add">Add:</label>
26 <input type="checkbox" id="entry_add" name="entry_add" value="" checked="on">
27
28 </td>
29
30 <td width="100" align="center">
31
32 <label for="entry_all">Show all:</label>
33 <input type="checkbox" id="entry_all" name="entry_all" value="">
34
35 </td>
36
37 <td width="106" align="center">
38
39 <label for="entry_delete">Delete:</label>
40 <input type="checkbox" id="entry_delete" name="entry_delete" value="">
41
42 </td>
43
44 <td width="7"></td>
45
46 <td align="left"><?php echo $message;?></td>
47
48 </tr>
49
50 </table>
51
52 </form>
53
54 <br />
55
56 <table id="table_yellow">
57
58 <tr height="30" bgcolor="#ffb717" align="center">
59
60 <td width="20">#</td>
61 <td width="100"><b>Owner</b></td>
62 <td width="100"><b>Date</b></td>
63 <td width="445"><b>Entry</b></td>
64
65 </tr>
66
// 上面是html,下面开始是PHP源码
67 <?php
68
69 // Selects all the records
70
71 $entry_all = isset($_POST["entry_all"]) ? 1 : 0;
72
73 if($entry_all == false)
74 {
75
76 $sql = "SELECT * FROM blog WHERE owner = '" . $_SESSION["login"] . "'";
77
78 }
79
80 else
81 {
82
83 $sql = "SELECT * FROM blog";
84
85 }
86
87 $recordset = $link->query($sql);
88
89 if(!$recordset)
90 {
91
92 // die("Error: " . $link->connect_error . "<br /><br />");
93
94 ?>
95 <tr height="50">
96
97 <td colspan="4" width="665"><?php die("Error: " . $link->error);?></td>
98 <!--
99 <td></td>
100 <td></td>
101 <td></td>
102 -->
103
104 </tr>
105
106 <?php
107
108 }
109
110 while($row = $recordset->fetch_object())
111 {
112
113 if($_COOKIE["security_level"] == "1" or $_COOKIE["security_level"] == "2")
114 {
115
116 ?>
117 <tr height="40">
118
119 <td align="center"><?php echo $row->id; ?></td>
120 <td><?php echo $row->owner; ?></td>
121 <td><?php echo $row->date; ?></td>
122 <td><?php echo xss_check_3($row->entry); ?></td>
123
124 </tr>
125
126 <?php
127
128 }
129
130 else
131 {
132
133 ?>
134 <tr height="40">
135
136 <td align="center"><?php echo $row->id; ?></td>
137 <td><?php echo $row->owner; ?></td>
138 <td><?php echo $row->date; ?></td>
139 <td><?php echo $row->entry; ?></td>
140
141 </tr>
142
143 <?php
144
145 }
146
147 }
148
149 $recordset->close();
150
151 $link->close();
152
153 ?>
154 </table>
155
156 </div>
感觉防护代码这有点问题,我没看明白
1 function htmli($data)
2 {
3
4 include("connect_i.php"); //链接数据库
5
6 switch($_COOKIE["security_level"]) //检测级别在cookie里
7 {
8
9 case "0" :
10
11 $data = sqli_check_3($link, $data);
12 break;
13
14 case "1" :
15
16 $data = sqli_check_3($link, $data);
17 // $data = xss_check_4($data);
18 break;
19
20 case "2" :
21
22 $data = sqli_check_3($link, $data);
23 // $data = xss_check_3($data);
24 break;
25
26 default :
27
28 $data = sqli_check_3($link, $data);
29 break;
30
31 }
无论case是几,执行的都是
sqli_check_3()进行过滤
sqli_check_3()的定义是
应该把xss的防御加在这里
1 function sqli_check_3($link, $data)
2 {
3
4 return mysqli_real_escape_string($link, $data);
5
6 }
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
- \x00
- \n
- \r
- \
- '
- "
- \x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。
1.low
级别同时不进行保护
2.medium
function xss_check_4($data)
{ // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
// These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
// Do NOT use this for XSS or HTML validations!!! return addslashes($data); }
在预定义字符前加反斜杠
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- NULL
3.high
1 function xss_check_3($data, $encoding = "UTF-8")
2 {
3
4 // htmlspecialchars - converts special characters to HTML entities
5 // '&' (ampersand) becomes '&'
6 // '"' (double quote) becomes '"' when ENT_NOQUOTES is not set
7 // "'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set
8 // '<' (less than) becomes '<'
9 // '>' (greater than) becomes '>'
10
11 return htmlspecialchars($data, ENT_QUOTES, $encoding);
12
13 }
htmlspecialchars()功能,将部分字符转化为html字符
bWAPP----HTML Injection - Stored (Blog)的更多相关文章
- bWAPP练习--injection篇之HTML Injection - Reflected (GET)
什么是Injection? injection,中文意思就是注入的意思,常见的注入漏洞就是SQL注入啦,是现在应用最广泛,杀伤力很大的漏洞. 什么是HTML injection? 有交互才会产生漏洞, ...
- bWAPP练习--injection篇SQL Injection (GET/Search)
SQL注入: SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到 ...
- bWAPP练习--injection篇之HTML Injection - Reflected (POST)
POST的和之前的GET的过程差不多,只是表单的提交方式不一样而已. low 我们在表单中填入一个超链接 <a href="http://www.cnblogs.com/ESHLkan ...
- webgote的例子(5)Sql注入(Blog)
SQL Injection - Stored (Blog) (本章内容):留言板的注入 看到这个页面先看以下这个页面是做什么的.进行正常的写入发现我每写一句话,其内容都会写到下面的entry里面 在尝 ...
- Angular2经典文章集锦
Angular Metadata 等基础知识 http://www.jianshu.com/p/aeb11061b82c Metadata告诉Angular如何处理一个类,只有我们将它通告给Angul ...
- sqli-labs学习笔记 DAY8
DAY 8 sqli-lab Page-3 sqli-labs lesson 38 What is Stacked injection? https://blog.csdn.net/Fly_hps/a ...
- Web API接口安全了解
2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...
- Metasploitable2使用指南
Metasploitable2使用指南 Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击.版本2已经可以下载,并且比上一个版本包 ...
- 前端 跨站脚本(XSS)攻击的一些问题,解决<script>alert('gansir')</script>
问题1:跨站脚本(XSS)的一些问题,主要漏洞证据: <script>alert('gansir')</script>,对于这个问题怎么解决? (测试应当考虑的前端基础攻击问题 ...
随机推荐
- JS的Document属性和方法(转)
document.title //设置文档标题等价于HTML的title标签document.bgColor //设置页面背景色document.fgColor //设置前景色(文本颜色)docume ...
- 微信小程序的账号找回。
之前注册过微信小程序,好久没用了,马上要开发微信小程序了,我今天登陆了一下突然发现 然后点击账号找回,按照流程同意点击下一步,到第二部时要输入搜索框里的提示. 这时的我早已忘了,百度搜了一下如何找回原 ...
- Sqoop源码解析
date: 2020-05-31 12:09:00 updated: 2020-08-21 17:33:00 Sqoop源码解析 org.apache.sqoop 文件夹 参考文档: https:// ...
- 校招“避雷针”——GitHub 热点速览 Vol.43
作者:HelloGitHub-小鱼干 如果要选一个关键词来概述本周的 GitHub Trending,保护 便是不二之选.先是有 ShameCom 来为应届毕业生护航,让学弟学妹们不被黑名单上的公司上 ...
- D. 停不下来的团长奥尔加 动态规划
题目描述 分析 设\(f[i]\) 为从 \(i\) 走到 \(i+1\) 的步数 初始值 \(f[i]=2\) 则 \(f[i]=\sum_{i=p[i]}^{i}f[i]\) 考试的时候用树状数组 ...
- Java学习的第四十五
1.例5.7求三个字符串中的最大值 import java.util.Scanner; public class Cjava { public static void main(String[]arg ...
- Java学习的第八天
1.求平均值 冒泡法 选择排序 插入排序 快速排序 二分法查找 使用工具排序 工具二分法查找 生成随机数 2.在二分法时,没有强调要先排序才可以二分法.递归没太看明白. 3.明天学习综合实例和第四章开 ...
- mysql数据库——事务隔离级别
四种隔离级别: 一:READ UNCOMMITTED(未提交读) 事务可以读取其他事务未提交的数据,称为脏读 二:READ COMMITTED(提交读) 一个事务开始时,只能"看见" ...
- XJOI 7191 Genius ACM
二分+倍增 题目 题目中的最大校验值应由数组排序后,取出最大值和最小值,次大值和次小值--进行做差平方取和 所以在加入一个新的数时,校验值是不会下降的 那么可以发现,校验值是单调递增的,所以可以用二分 ...
- 系统解析Apache Hive
Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供一种HQL语言进行查询,具有扩展性好.延展性好.高容错等特点,多应用于离线数仓建设. 1. ...