2019-2020-2 20175329许钰玮《网络对抗技术》Exp8 Web基础
2021-03-06 18:29
YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
标签:length http 使用 errno 用户输入 连接数据库 NPU and 搭建
- 实验目的
- 实验内容
- Web前端HTML
- Web前端javascipt
- Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
- 实验步骤
- 环境搭建
- apache2搭建
- mysql环境搭建
- php搭建
- 自己编写一个简单的网站
- 用HTML写登录表单
- 用JavaScript处理事件
- 用PHP编写后台逻辑
- 最终效果
- SQL注入: XSS攻击测试
- 环境搭建
- 实验问题与回答
- 问题一:
- 问题二:
- 问题三:
- 实验总结
实验目的
实验内容
- 操作程序规律
- 运行脚本或可执行文件
- 查看配置文件
- 出错找日志
Web前端HTML
- 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
Web前端javascipt
- 理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
- 最简单的SQL注入,XSS攻击测试
- 功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。
实验步骤
环境搭建
apache2搭建
- 使用指令
/etc/init.d/apache2 start
开启服务
- 在浏览器里输入
localhost
查看
mysql环境搭建
- 因为kali中自带安装了mysql所以我们只需要对其初始化然后运行即可
sudo /etc/init.d/mysql start
-
mysql -u root -p
启动mysql并输入指令 - 后面的这些指令就不说了吧,是在之前刘念老师的课上学到过的mysql指令调用哈,不会的就看看我截图指令吧。
- 建立一个我们所需要的数据库咯
- 然后插入一条我们的个人信息啦。
- 在这里前期准备就完成咯。
php搭建
-
service apache2 start
是为了搭建接口我们在这里使用php语言需要和mysql数据做一个连接。 - 然后我们编写几个简单php文件放在
/var/www/html
下面
- 这样我们就能看见php搭建成功咯
自己编写一个简单的网站
- 接下来,我们自己简单地写一个网站,只完成最基本的登录功能即可。
- 我们之前创建了web_db这个数据库,在web_db中添加了users表,并插入了一条数据。
- 登录的用户名为xuyuwei,口令为20175329。
用HTML写登录表单
- 首先我们编写前端的登录页面,非常简单。
- 我们编写一个名叫login.html的登录表单
Welcome
Welcome!
- 核心部分就是form表单,input标签的name属性是后台php接收参数时要用到的。
-
是密码框,尽管在屏幕上被隐藏了口令,但不代表传输过程中是安全的。
用JavaScript处理事件
- 我们编写event.js处理事件。当焦点离开用户名输入框时,如果用户输入的字符少于5个,我们在页面反馈信息,提示用户名不应该少于5个字符。
function checkUsername() {
var elMsg = document.getElementById(‘feedback‘);
if (this.value.length
用PHP编写后台逻辑
- 我们用PHP处理前端提交的表单。依葫芦画瓢,照搬学长的代码。
- 下面是login.php
connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "
Hello, $username
";
}
else {
echo "
login failed!!!!
" ; }
$result->close();
}
$mysqli->close();
?>
- 虽然我对PHP一窍不通,但是这段代码的逻辑很容易从字面上理解的。
- 和Java的JDBC相比,php连接数据库还是挺方便的。
- 这里故意用字符串拼接的方式构成$query_str查询语句,方便后面的SQL注入。
- 如果用参数化语句的话,就能大大提高对SQL注入的免疫力。
最终效果
- 虽然这个网站挺简陋的,但能把原理了解清楚就行。
- 登陆成功咯
SQL注入: XSS攻击测试
- XSS本质是脚本的执行,当然不一定是JavaScript,也可以是一段html片段。
- 我们现在就让网站执行一次弹窗。当然,真正的XSS攻击不会这么简单。
- 输入
‘or 1=1 #
- 如果成功你就和我弹个窗哈哈哈哈
- 当然,作为注入的内容,也可以是HTML片段。
- 比如,展示图片
实验问题与回答
问题一:
- 在配置mysql的时候刚刚开始输入指令
mysql start
的时候被报错
- 我突然想起来之前启动apache2的时候使用过这个全局初始环境指令然后就在这里试了试,没想到成功了。于是我对这个
init.d
的作用有点好奇就查了查. - 突然发现一个重新配置软件环境的好方法呢。
问题二:
- 刚刚开始搭建环境的时候,php官方版本写的是安装php5的方法,网上很多嵌套的博客都是安装php5的方法,我在寻思先康康有没有php于是调用了一下
whereis php
就可以看见
- 后面我把安装php5的指令更改为php7发现里面的东西都是配置好的只等着使用就ok了,看来kali下面的东西都挺配套的呀。
问题三:
- 刚刚开始做搭环境所有都很顺利但是到了这一步人就傻了,搁置来来回回也有一周多的时间
- 后面在解答过程中刘老师提供的思路真的太棒了,一下就把困惑我好久的问题迎刃而解了。刘老师说在使用
root
作为账户的时候需要管理员权限,如果作为数据库连接没有考虑到这个情况所以无论root管理下的账户密码数据库消息是否完全匹配都不一定能连接上,于是让我再建立一个账户,那好呗我就用kali
登陆咯。
- 后面就是我们所预期的实验结果了
实验总结
这次的实验和之前的刘念老师的web课程很多地方都是相似的,知识是相同的,我突然发现在linux下面有成熟的配件搭建环境起来更加直接简单。还记得当时为了搭建刘念老师的web真的是....而且关于1=1这个恒等式刘老师上课也是讲过的,让我再一次对于安全漏洞方面有了更加深入的理解和了解。倒数第二次试验了,说实话...这学期都快结课了...
2019-2020-2 20175329许钰玮《网络对抗技术》Exp8 Web基础
标签:length http 使用 errno 用户输入 连接数据库 NPU and 搭建
原文地址:https://www.cnblogs.com/xyejava/p/12868140.html
下一篇:jQuery 语法
文章标题:2019-2020-2 20175329许钰玮《网络对抗技术》Exp8 Web基础
文章链接:http://soscw.com/index.php/essay/60981.html