vi /etc/apache2/ports.conf
更改apache2的监听端口号;apachectl start
打开apahce,并使用netstat -aptn
查看端口号,确认apache正确开启,如下图所示:
http://127.0.0.1:5236
可以看见上一次实验克隆的网页cd /var/www/html
在/var/www/html目录下编辑test.html
http://127.0.0.1:5236/test.html
就能打开该网页。function nameText(){ var name= document.getElementByIdx_x ("username"); var divID= document.getElementByIdx_x ("divName"); divID.innerHTML=""; if(name.value==""){ divID.innerHTML="用户名不能为空"; return false; } } function passText(){ var pass= document.getElementByIdx_x ("password"); var divIP= document.getElementByIdx_x ("divPass"); divIP.innerHTML=""; if(pass.value==""){ divIP.innerHTML="密码不能为空"; return false; } } } </script>
vi /var/www/html/test.php
输入如下:<?php echo ($_GET["A"]); include($_GET["A"]); echo "php page 5236!<br>"; ?>
http://127.0.0.1:5236/test.php
,可以看见如下界面,测试成功
开启sql服务/etc/init.d/mysql start
输入mysql -u root –p
,并根据提示输入密码,默认密码为p@ssw0rd
进入MySQL
此处可以修改自己的密码:update user set password=PASSWORD("新密码") where user=‘root‘;
use mysql;
,选择mysql数据库select user, password, host from user;
,mysql库中的user表中存储着用户名、密码与权限UPDATE user SET password=PASSWORD("新密码") WHERE user=‘root‘;
flush privileges;
,更新权限quit
退出
重新输入mysql -u root –p
,检测新密码能否成功使用,能成功登录即可。
在Mysql中建库建表,输入如下
CREATE SCHEMA `库表的名称`;
CREATE TABLE `库表的名称`.`users` (
`userid` INT NOT NULL COMMENT ‘‘,
`username` VARCHAR(45) NULL COMMENT ‘‘,
`password` VARCHAR(256) NULL COMMENT ‘‘,
`enabled` VARCHAR(5) NULL COMMENT ‘‘,
PRIMARY KEY (`userid`) COMMENT ‘‘);
- **注意**:此处一定要注意`单引号`和`键盘Esc下面的那个符号`不要写错了!!!
- 
insert into users(userid,username,password,enabled) values(1,‘用户id‘,password("用户密码"),"TRUE");
show databases
,查看新建的库表的信息
在/var/www/html
文件夹下输入vim login.html
,编写登录网页
在同样的目录下输入vim login.php
,通过php实现对数据库的连接
在浏览器中输入localhost:5236/login.html
,就可以访问自己的登陆页面啦,这里套用了一个模板让页面看起来更加美观
5236
,密码是20145236
在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,输入数据库中没有的就会认证失败
嫌弃这个页面不友好?我们可以加一行代码header("Refresh:5;url=welcome.php");
,实现在5秒之后跳转到welcome.php页面
最终登陆成功的样子如下:
1.搭建一个网站实现用户登录,这一步已经完成。
2.构造SQL语句:在用户名输入框中输入‘ or 1=1#
,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username=‘‘ or 1=1#‘ and password=md5(‘‘)
以下的两句sql语句等价:
select * from users where username=‘‘ or 1=1#‘ and password=md5(‘‘)
select * from users where username=‘‘ or 1=1
1=1
永远是都是成立的,即where
子句总是为真,所以能够成功登录3.或者在用户名框中输入‘;insert into users(userid,username,password,enabled) values(777,‘121212‘,password("121212"),"TRUE");#
,在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了,但是得修改一下之前的代码,因为我们之前编的代码中if ($result = $mysqli->query($query_str))
这条判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))
便能实现执行多个sql语句
4.接着使用新插入的用户名和密码进行登录,登录成功。
XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户游览器的控制。
具体来说假如用户提交的数据含有js代码,不做任何处理就保存到了数据库,读出来的时候这段js代码就变成了可执行的代码。一般用户提交的数据永远被认为是不安全的,在保存之前要做对应的处理。
xss攻击可以分成两种类型:非持久型攻击、持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
xss攻击也可以分成三类:
1.输入<img src="5236.JPG" />haha</a>
先进行简单的测试
点击登录就会出现图片5236.JPG
的超链接
2.我们还可以给出钓鱼网站的超链接实现XSS攻击。
1.这一部分采用了写入文件和读取文件从而实现发帖的方式,核心代码有
file_put_contents(‘data.txt‘,"title:".$title.",content:".$content."\n", FILE_APPEND);
/n
替换为换行符<br>
$content = file_get_contents("data.txt");
echo str_replace("\n", "<br>", $content);
echo ‘<a href="test.html">start a new post!</a>‘;
2.在浏览器中输入http://127.0.0.1:5236/logIn.php
,进行登录:
3.登录成功后如图所示:
4.点击start a new post!
发帖,进入如下界面:
5.提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录:
6.点击CHECK
可以查看会话记录:
test.php
中的file_put_contents(‘data.txt‘,"title:".$title.",content:".$content."\n", FILE_APPEND);
代码,可以查看到会把会话记录写进data.txt
,但是我点击一次后并没有相关记录的显示,想想可能是权限问题并不能直接在/var/www/html
文件夹下生成文件,所以先后执行命令,新建该文件并赋予可操作的最高权限:touch data.txt
和chmod 777 data.txt
即可CHECK
,看见如下图所示的会话记录:本次实验主要实现的是对于简单网页的攻击,都比较基础,之前的课程中也涉及过一部分,如sql注入、XSS攻击等。以目前实际情况看,没有任何一个网站的会毫无防范任人攻击,一旦做了web安全方面的设计,那么我们的简单攻击手段并没有用处,所以要实现真正的攻击,我们要学的东西还有很多。通过本次实验也提醒了我们web安全设计的重要性,为我们以后的网站搭建提供了很好的参考。
之前我们也学过一些有关html网页编程的例子,但是接触面比较窄,这次实验又让我们系统的接触了web相关的知识,尤其是在做到sql注入和XSS攻击的时候,我觉得网页攻击还是非常可怕的,因为现在的网页很多都会连接这数据库,虽然关于sql注入和xss攻击防不胜防,但是我们在编写html的时候仍必须了解一些防范知识,避免一些低级的攻击。
2019-2020-2 网络对抗技术 20175236 EXP8 Web基础
原文:https://www.cnblogs.com/wff666999/p/12933830.html