(1)什么是表单.
(2)浏览器可以解析运行什么语言.
(3)WebServer支持哪些动态语言.
因为之前学过Java web这门课,所以针对这次的实验还是有些基础的。不过岁月不饶人啊,还是有很多东西忘记了。幸好老师给了菜鸟教程这个网站让我们参考学习,我还是收获蛮多的。这次实验的效果还可以,满足了老师提的所有要求。不过我觉得我的前端做得太简单了,课下应该多花时间再研究研究。菜鸟教程上有很多实例,用起来也很方便,左边是代码,右边就是呈现的效果。
现在来看,真是太后悔了,之前没有选过数据库这门课,感觉很吃亏。正是由于对这部分知识的不熟,导致我在实验过程中犯了许多不应该有的错误,也因此浪费了很多时间。不过还好实验成功了,在解决问题的这个过程中,我确实蛮有收获,感触颇深。
service apache2 start开启Apache2服务netstat -aptn查看端口占用情况,在这里apache2占用端口8080
localhost:8080/etc/apache2/ports.conf下设置的Apache监听端口


cd /var/www/html,新建一个html文件


html_form_action.php 的页面,由于没有对此页面进行编写,所以出现的是404页面。

效果显示:

开启sql服务:/etc/init.d/mysql start
输入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退出




localhost:8080/20145326test.php,可以看见如下界面,测试成功
vim login.html,编写登录网页


vim login.php,通过php实现对数据库的连接。
在firefox浏览器中输入localhost:8080/login.html,就可以访问自己的登陆页面啦。
在登录页面中输入数据库中存有的用户名和密码并点击登录,登陆成功。



构造SQL语句:在用户名输入框中输入‘ or 1=1#,密码随便乱输,这时候的合成后的SQL查询语句为select * from users where username=‘‘ or 1=1#‘ and password=md5(‘‘)
因为1=1永远都是成立的,即where后的条件总是为真,所以能够成功登录。


输入‘;insert into users(userid,username,password,enabled) values(666,‘aaa‘,password("aaa"),"TRUE");#
但是页面跳转后,居然是空白页。
百度了一下才知道,是php代码中的判断语句的问题,它不允许多条执行,我们可以使用$result = $mysqli->multi_query($query_str)实现多条SQL语句。
现在再试试看。


居然失败了,为什么啊???
为了检验语句是否执行成功,我直接进入数据库中查找,显然注入是没有问题的。

$result->num_rows>0这行代码,在我把query改为multi_query的时候出现了问题。
<img src="5326.jpg" /></a>先进行简单的测试。

原文:http://www.cnblogs.com/cxy1616/p/6817801.html