1.本实践的具体要求有:javascript
(1).Web前端HTML(1分)php
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。html
(2).Web前端javascipt(1分)前端
理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。java
(3).Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表(1分)mysql
(4).Web后端:编写PHP网页,链接数据库,进行用户认证(1分)git
(5).最简单的SQL注入,XSS攻击测试(1分)sql
功能描述:用户能登录,登录用户名密码保存在数据库中,登录成功显示欢迎页面。数据库
课题负责人须要完成:登录后能够发贴;会话管理。apache
1.实验后回答问题
(1)什么是表单
就是个表,与后台数据库相连
(2)浏览器能够解析运行什么语言。
html语言,js语言。
(3)WebServer支持哪些动态语言
js算不算动态语言?若是算那就是
2.实验总结与体会
感受跟上学期刘念老师教的那些差很少,多了个php文件,以及一些攻击方法,不过应对这些攻击方法,我感受限制一下最大的输入字符数就能够解决吧?
3.实践过程记录
先经过apachectl start命令开启Apach,使用netstat -aptn命令查看端口占用:
由于端口号80已经被占用(上次实验设置的),因此改/etc/apache2/ports.conf里的端口为5202后从新开启阿帕奇,再次查看端口:
能够在浏览器中输入localhost:5208来检查是否正常开启,这里能够看到打开了上次实验的网页,开启正常:
打开网页的效果,在浏览器里面输入127.0.0.1:5202就能够打开它
提交以后是404,由于没有php文件
js验证用户名和密码的规则
打开localhost:5202/mc.php
输入mysql -u root -p,并根据提示输入密码,默认密码为p@ssw0rd,进入MySQL
可使用命令show databases;查看信息(分号不能够漏掉,分号表明命令的结束):
修改密码:
输入use mysql;,选择mysql数据库
输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限
输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';
输入flush privileges;,更新权限
输入quit退出
从新登陆就能够发现密码修改为功
使用以下两条命令能够创建新表:
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 '');
向表中添加内容:
use 刚刚创建的库表的表名
insert into users(userid,username,password,enabled) values(1,'用户id',password("用户密码"),"TRUE");
这里有个问题就是提交不上去,无奈我把正确的代码一个一个字母敲了上去,同时我也发现kali里面自带的那个login.html里面是有提醒的:”do not click me!“
实现与数据库连接的php页面:
<?php
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
echo $uname;
$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";
echo "
{$query_str}
";
$mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
}
else echo "lalalademaxiya.
";
if ($result1= $mysqli->multi_query($query_str))
echo "lalalajiecaobujianle
";
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
/* 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 "
Wellcome login Mr/Mrs:{$uname}
";
} else {
echo "
login failed!!!!
" ;
}
/ free result set */
$result->close();
}
$mysqli->close();
?>
在网页登陆的用户名中填写' or 1=1#,成功登陆:
这个没有作尝试,当时电脑快没电了,可是原理是懂的。