20155331《网路对抗》Exp8 WEB基础实践
基础问题回答
什么是表单
表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签,这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。表单域,包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。表单按钮,包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作
浏览器可以解析运行什么语言
浏览器可以解析运行html、XML,javascript等脚本语言,对于JS脚本,会调用JS脚本引擎来处理
WebServer支持哪些动态语言
比较常用的有ASP语言,php语言和JSP语言,比如JavaScript、JSP、PHP等。
实验体会
这次的实验感觉比以前的都要困难的多,特别是我自己的编程能力也不是特别的好,代码变成了一个很大的问题。不过,虽然说实验过程比较的辛苦,但结果而言还是比较满意的,辛苦很长时间做出来了预期的效果,还是很有成就感的。
实验过程
1.Web前端HTML
输入命令sudo apt-get install apache2进行安装
输入命令apachectl start启动apahce
打开失败
于是查看了端口占用的情况,并且杀死了端口,然后再次尝试打开。
打开成功。
浏览器中输入localhost:80,可以看见我们的Apache是在正常工作的。
使用cd /var/www/html进入Apache目录下,新建一个简单的含有表单的html文件
在浏览器打开:
2.Web前端:javascipt
在原有5331.html基础上,可以添加一段JavaScript代码,以完成对用户是否填写邮箱和密码的判断。l如下:
3.mysql基础
输入/etc/init.d/mysql start开启MySQL服务:
输入mysql -u root -p使用root权限进入,
用show databases;查看基本信息:
现在来修改密码
输入以下命令修改密码
use mysql;
select user, password, host from user;
UPDATE user SET password=PASSWORD("20155331") WHERE user=\'root\';
flush privileges;
quit
然后重新登录mysql
创建数据库和新表:
create database dzdd;
use dzdd;
使用create table dzddtable;建立数据表;使用show tables;查看存在的数据表:
create table dzddtable (userid VARCHAR(100),username VARCHAR(45),password VARCHAR(256),enabled VARCHAR(5))
在表中添加内容:
insert into dzddtable values(\'dzdd\',\'5331\');
有了数据表就往里面写数据,再查一下看存进去了没有。
Web后端:PHP网页
PHP是一种通用开源脚本语言。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
新建一个PHP测试文件vi /var/www/html/dzdd.php测试文件
从浏览器中直接打开localhost:80/dzdd.php,
可以看见测试成功
PHP+MySQL实现登录网页编写
在/var/www/html文件夹下输入vim dzdd.html,编写登录网页
将之前编的登录网页的5331.html代码中form的action属性由#改成dzdd.php,即登录后跳转到HGY.php,再在浏览器中输入localhost:80/5331.html访问自己的登录页面
SQL注入
在用户名输入框中输入\' or 1=1#,密码输什么都会成功登陆,原因是这时候的合成后的SQL查询语句为select * from users where username=\'\' or 1=1#\' and password=md5(\'\'),#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆:
先在PHP中改语句if ($result = $mysqli->query($query_str))为if ($result = $mysqli->multi_query($query_str)),然后在用户名框中输入\';insert into users valu(\'7\',\'15331\',\'20155331\',"TRUE");#在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了(登录前将if ($result = $mysqli->query($query_str))语句改回来)。