你的内容
★ 实验要求
(1)Web前端:HTML(0.5分)
(2)Web前端:JavaScript(0.5分)
(3)Web后端:MySQL基础(0.5分)
(4)Web后端:PHP编写(0.5分)
(5)最简单的SQL注入,XSS攻击测试(0.5分)
★ 最终实现
★ 什么是表单?
<form>
开始,</form>
结束。form的属性表
属性 | 描述 |
---|---|
accept-charset | 规定在被提交表单中使用的字符集(默认:页面字符集) |
action | 规定向何处提交表单的地址(URL)(提交页面) |
autocomplete | 规定浏览器应该自动完成表单(默认:开启) |
enctype | 规定被提交数据的编码(默认:url-encoded) |
method | 规定在提交表单时所用的 HTTP 方法(默认:GET) |
name | 规定识别表单的名称(对于 DOM 使用:document.forms.name) |
novalidate | 规定浏览器不验证表单 |
target | 规定 action 属性中地址的目标(默认:_self) |
★ 浏览器可以解析运行什么语言?
★ WebServer支持哪些动态语言?
HTML:超文本标记语言(Hyper Text Markup Language),是标准通用标记语言下的一个应用。HTML 不是一种编程语言,而是一种标记语言,是网页制作所必备的语言。
(1)开启Apache服务并测试是否可用
service apache2 start
netstat -aptn
如果80端口被Apache2监听,则启动成功;若80端口被占用,可以使用netstat -tupln | grep 80
查看占用端口的应用PID,并用kill processID(进程ID)
杀死进程,再次启动Apache即可。
kali中打开浏览器,输入127.0.0.1
vi /var/www/html/test5223.txt
,输入字符127.0.0.1/test5223.txt
(2)编写一个简单HTML,包含一个表单
vi /var/www/html/
下创建实验用文件夹exp8,进入文件夹<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body background="1.jpg" style="position: absolute; top: 40%; left: 50%; transform: translate(-50%,-50%); background-repeat: no-repeat; background-size: 100% 100%; background-attachment: fixed;">
<font color="white"><h2 align="center">Login</h2></font>
<center>
<form action="login" method="post">
<input placeholder="Username" name="Name" class="user" type="username">
<br></br>
<input placeholder="Password" name="Password" class="pass" type="password">
<br></br>
<input type="submit" value="Login">
</form>
</center>
</body>
</html>
(3)打开浏览器,输入正确URL查看编写的HTML页面
127.0.0.1/exp8/form.html
JavaScript:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
(1)在2.1的基础上,实现JavaScript编写
gedit /var/www/html/exp8/form_javascript.html
,编写代码form_javascript.html
增加部分的代码<script language="javascript">
function check(){
if(document.myform.Name.value == ""){
alert("Please check your username!");
return false ;
}
if(document.myform.Password.value == ""){
alert("Please check your password!");
return false ;
}
}
</script>
(2)浏览器实现效果
MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表、查表、撤库等。
(1)kali中启动mysql,实现查库、查用户、更新用户信息等操作
/etc/init.d/mysql start
mysql -u root -p
password
show databases;
use mysql;
select user, password, host from user
update user set password=PASSWORD("20165223") where user=‘root‘;
flush privileges;
,exit
(2)建库、建表、插入数据、查询数据
create database 数据库名称;
创建新的数据库create table login (username VARCHAR(50),password VARCHAR(50));
insert into login values(‘cn‘,‘20165223‘);
select * from login;
(3)增加新用户并转授权限
grant select,insert,update,delete on caini.* to cn@localhost identified by "20165223";
Web后端:编写PHP网页,连接数据库,进行用户认证
test.php
代码内容:<?php
echo ($_GET["a"]);
include($_GET["a"]);
echo "Hello!20165223!<br>";
?>
/etc/passwd文件中保存的就是系统中所有的用户和用户的主要信息
(1)编写PHP网页
gedit /var/www/html/exp8/
,编写login.php
<?php
$uname=$_POST["Name"];
$pwd=$_POST["Password"];
echo $uname;
$query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1","cn","20165223","caini");
$query_str1="use caini;";
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo ":connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> {$uname}:Welcome login!! <br> ";
}
else {
echo "<br> login failed!!!! <br> " ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>
(2)浏览器打开form_javascript.html,正确/错误登陆,查看跳转内容
(1)SQL注入
SQL注入:SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。攻击者通过在应用程序预先定义好的SQL语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的查询,篡改命令。
‘or 1=1#
,表单密码可以输入任意数值formusr = 'or 1=1#
formpwd = anything
select * from users where name=‘‘ or 1=1 #‘ and password=‘ ‘;
,又#
在MySQL代表注释,查询语句实际为select * from users where name=‘‘ or 1=1
为永真式,则这个条件恒成立,因此数据库不会报错。(2)XSS攻击
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。
gedit /var/www/html/exp8/
下建立一个测试文件(这里直接用来实验2.1中用过的测试文件)<a href="test5223.txt">点击进入文件</a>
★ 2.2中加入了JavaScript代码后无法实现效果?
onClick="return check()"
,没法执行加入的check函数★ 2.4中跳转页面错误?
★ 2.4中用户身份验证失败,无法进入数据库?
★ 2.4中连接成功但无法登陆?
参考资料
原文:https://www.cnblogs.com/moddy13162201/p/10883181.html