Exp8 web基础
基礎問題回答
1.什么是表單
表單在網頁中主要負責數據采集功能。一個表單有三個基本組成部分:
表單標簽:這里面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。
表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等。
表單按鈕:包括提交按鈕、復位按鈕和一般按鈕;用于將數據傳送到服務器上的CGI腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處理工作。
2.瀏覽器可以解析運行什么語言
支持HTML(超文本標記語言)、XML(可擴展標記語言)以及Python、PHP、JavaScript、ASP等眾多腳本語言
3.WebServer支持哪些動態語言
Javascript、ASP、PHP、Ruby等腳本語言
4.get和post有什么區別?
GET后退按鈕/刷新無害,POST數據會被重新提交。
GET書簽可收藏,POST為書簽不可收藏。GET能被緩存,POST不能緩存 。
GET對數據長度有限制,當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。POST無限制。
GET只允許 ASCII 字符。POST沒有限制。也允許二進制數據。
與 POST 相比,GET 的安全性較差,因為所發送的數據是 URL 的一部分。在發送密碼或其他敏感信息時絕不要使用 GET !POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日志中。GET的數據在 URL 中對所有人都是可見的。POST的數據不會顯示在 URL 中。
實踐總結與體會
1.知識點總結:
HTML:超文本標記語言,標準通用標記語言下的一個應用。“超文本”就是指頁面內可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標記語言的結構包括“頭”部分(英語:Head)、和“主體”部分(英語:Body),其中“頭”部提供關于網頁的信息,“主體”部分提供網頁的具體內容。
Javascript:JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。
PHP:PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域。
MySQL:MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。由于其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
2.實驗體會:
這次實驗主要是利用了web相關技術,了解HTML、PHP、MySQL的基本語法,其中遇到了一些因為沒有基礎而造成的困難,但是在仔細學習之后都一一解決了。
?
實驗過程記錄
1.Web前端:HTML基礎
kali已經預裝apache,我們使用?systemctl start apache2 ,將服務打開。
使用?netstat -tupln |grep 80?指令查看80端口被哪些進程占用,如果有的話,用?kill+(進程ID)?殺死進程。
?vi /var/www/html/ login.html 編輯代碼,在Apache工作目錄下建立一個含有表單的html文件。
1 <html> 2 <head> 3 <title>CryptoTeam</title> 4 <!-- Meta tag Keywords --> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <!-- Meta tag Keywords --> 7 </head> 8 9 <body> 10 <!-- main --> 11 <!--//header--> 12 <h2>Login Quick</h2> 13 <form action="login" method="post"> 14 <input placeholder="E-mail" name="Name" class="user" type="text"> 15 <br> 16 </br> 17 <input placeholder="Password" name="Password" class="pass" type="password"> 18 <br> 19 </br> 20 <input type="submit" value="Login"> 21 </form> 22 <!--//main--> 23 </body> 24 </html>
?打開網頁,效果如下:
2.Web前端:javascipt基礎
?添加一段代碼判斷身份信息
1 <html> 2 <head> 3 <title>CryptoTeam</title> 4 <!-- Meta tag Keywords --> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <!-- Meta tag Keywords --> 7 </head> 8 9 <body> 10 <!-- main --> 11 <!--//header--> 12 <h2>Login Quick</h2> 13 <form action="login" method="post" name="form_login"> 14 <input placeholder="E-mail" name="Email" class="user" type="text" οnfοcus="if (this.value=='Your email') this.value='';" /> 15 <br> 16 </br> 17 <input placeholder="Password" name="Password" class="pass" type="password" οnfοcus="if (this.value=='Your password') this.value='';"/> 18 <br> 19 </br> 20 <input type="submit" value="Login" onClick="return validateLogin()"/> 21 </form> 22 <!--//main--> 23 <script language="javascript"> 24 function validateLogin(){ 25 var sUserName = document.form_login.Email.value ; 26 var sPassword = document.form_login.Password.value ; 27 if ((sUserName =="") || (sUserName=="Your email")){ 28 alert("user email!"); 29 return false ; 30 } 31 32 if ((sPassword =="") || (sPassword=="Your password")){ 33 alert("password!"); 34 return false ; 35 } 36 37 } 38 </script> 39 40 </body> 41 </html>3.Web后端:MySQL基礎
輸入?/etc/init.d/mysql start?開啟MySQL服務:
?輸入?mysql -u root -p?使用root權限進入,默認的密碼是?password?:
輸入?use mysql; ,進入mysql數據庫,輸入?update user set password=PASSWORD("20164309") where user='root';?,修改密碼;輸入?flush privileges;?,更新權限。
使用?create database oyyx;?建立一個數據庫;使用?show databases;?查看存在的數據庫;使用?use oyyx;?使用我們創建的數據庫。
?
用?create table test_table (username VARCHAR(20), password VARCHAR(20));?建立數據表,?show tables;?查看數據表。
增加一個名為oyyx的新mysql用戶,使用?grant select,insert,update,delete on oyyx.* to oyyx@localhost identified by "20164309";?指令進行。
4.Web后端:編寫PHP網頁
先編輯一個簡單的php腳本:
1 <?php 2 echo ($_GET["a"]); 3 include($_GET["a"]); 4 echo "Hello world! This is my php test page!<br>"; 5 ?>輸入?localhost:80/phptest.php?a=/etc/passwd ,可看到?/etc/passwd?文件的內容
利用PHP和MySQL,結合之前編寫的登錄網頁進行登錄身份認證,修改后的login.php代碼如下:
1 <?php 2 $uname=$_POST["Email"]; 3 $pwd=$_POST["Password"]; 4 echo $uname; 5 $query_str="SELECT * FROM test_table where username='$uname' and password='$pwd';"; 6 $mysqli = new mysqli("127.0.0.1", "oyyx", "20164309", "oyyx"); 7 $query_str1="use oyyx;"; 8 9 /* check connection */ 10 if ($mysqli->connect_errno) { 11 printf("Connect failed: %s\n", $mysqli->connect_error); 12 exit(); 13 } 14 echo "connection ok!"; 15 /* Select queries return a resultset */ 16 if ($result = $mysqli->query($query_str1)) 17 echo"<br>Success into database!"; 18 echo$uname; 19 if ($result = $mysqli->query($query_str)) { 20 if ($result->num_rows > 0 ){ 21 echo "<br> {$uname}:Welcome!!! <br> "; 22 } 23 else { 24 echo "<br> login failed!!!! <br> " ; } 25 /* free result set */ 26 $result->close(); 27 } 28 $mysqli->close(); 29 ?>注意,這里的action,需要選擇結合mysql寫成的login.php。
注意,這里需要選擇之前創建的表test_login。
輸入數據庫中的賬號密碼,登錄成功。
5.最簡單的SQL注入
在用戶名框中輸入?' or 1=1 ,密碼隨意輸入
這是因為,輸入的用戶名和我們的代碼中select語句組合起來變成了?select * from users where username='' or 1=1#' and password=''?,#相當于注釋符,會把后面的內容都注釋掉,而1=1是永真式,所以這個條件永遠成立,所以不管密碼是否輸入正確,都能夠成功登陸。
6.XSS攻擊測試
?在用戶名框中輸入?<img src="1.jpg" />20164309</a> ,密碼隨意輸入。
?
在Login.php中有一個echo uname。而uname是從前端接收的usename,當我們在用戶名輸入上面那句話的時候就會講這句話原封不動的傳給后臺,然后在echo語句中被執行。顯示當前文件夾中的圖片。
?
轉載于:https://www.cnblogs.com/20164309-kx/p/10852174.html
總結
以上是生活随笔為你收集整理的Exp8 web基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exp7 网络欺诈防范
- 下一篇: 实验5_JPEG解码