JavaScript、ASP、PHP、Ruby等腳本語言。javascript
service apache2 start
開啓Apache,使用netstat -aptn
查看確認端口占用127.0.0.1:8080
,登陸到Apache首頁驗證其可用cd /var/www/html
,新建一個test1.html文件,而且編寫一個含有表單的htmllocalhost/test1.html
,設計表單時有設計兩個輸入框的初始值/etc/init.d/mysql start
打開mysql服務mysql -u root -p
以root身份登陸,輸入默認密碼爲password,進入Mysqluse mysql;
選擇mysql數據庫select user, password, host from user;
顯示mysql庫中已有的用戶名、密碼與權限UPDATE user SET password=PASSWORD("新密碼") WHERE user='root';
更改用戶名root的密碼flush privileges;
更新權限mysql -u root -p
從新進入,使用新密碼登陸成功,說明修改爲功CREATE SCHEMA
4308zss;
建立庫表輸入如下php
use 4308zss
打開表,insert into users(userid,username,password,enabled) values(1,'20154308',password("20154308"),"TRUE");
進行內容的添加
html
sudo apt-get install php
<form method ="post" action="test.php" name="frmLogin" >
,test.php是後面要用到的php文件,也就是鏈接到這裏;php裏的代碼是$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";
users是以前mysql基礎裏新建的用戶,在這個用戶裏有我新建的記錄,用來匹配在網頁上輸入的用戶密碼是否正確。差很少就是這些,能夠作實驗了。html:前端
<html> <head> <title>test</title> </head> <body> <table> <form method ="post" action="test.php" name="frmLogin" > <tr> <td>user</td> <td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value=='Your name') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td>password</td> <td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value=='Your password') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td><input type="checkbox" name="zlogin" value="1">auto login</td>
php:java
<?php $uname=($_POST["username"]); $pwd=($_POST["password"]); /* echo $uname; */ $query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');"; /* echo "<br> {$query_str} <br>";*/ $mysqli = new mysqli("127.0.0.1", "zss", "20154308", "4308zss"); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } echo "connection ok!"; /* Select queries return a resultset */
結果是這樣,鏈接到php文件了可是後面就壓根沒有去鏈接個人數據庫。檢查php文件
以前說的應該填users的地方我一開始填了4308zss,這是我新建的庫的名字啊,應該填用戶名啊,改掉!再次登陸是下面這樣。
鏈接到數據庫,可是匹配不了記錄。多是users這個用戶的權限不夠,因而賦予它全部權限grant select,insert,update,delete on 4308zss.* to users@localhost identified by "20154308";
可是結果好像如出一轍,不能夠!而後發現了我和某一個試驗成功的同窗的代碼不同的地方mysql
細微的差異,多是語法錯誤吧,最後改掉以後就ok了web
下圖是匹配正確的結果sql
在登陸界面用戶名處輸入' or 1=1#,密碼隨意,發現能夠成功登陸
數據庫
成功登錄的緣由:
select * from users where username='' or 1=1#' and password=''
,#是註釋符,將其後面的內容給註釋掉了,只剩下前面的1=1,固然是恆成立apache
<img src="0.jpg" />haha</a>
,密碼隨意可是同樣的結果,也不能夠……最後就是沒看見圖片