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#,成功登陸:
這個沒有作嘗試,當時電腦快沒電了,可是原理是懂的。