SQL注入的原理是把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。咱们访问百度时,http://www.baidu.com/
,这个是一个正常的页面请求语句,没有涉及到任何动态请求数据库的动做,因此这种状况下不会有SQL注入。像http://www.example.com?userid=1
这个URL请求,其中包含了一个Key-Value对经过这个URL语句能够向数据库发送userid的数据,从而进行“增删改查”。也就是说"?"后面的数据是和数据库打交道的,那么在"?"后面跟的信息就有可能会被加入恶意的SQL语句。javascript
sudo apt-get install apache2
apachectl start
查看端口占用状况:netstat -aptn
图1
php
浏览器登陆到Apache首页验证其可用。图2 出现了上一次实验的假装网页
html
Apache的工做目录是/var/www/html,能够测试apache是否可读取工做目录下的文件vi /var/www/html/test.txt
,而后随意输入一串字符,浏览器打开 127.0.0.1:8088/test.txt
,可看到test.txt的内容。图3
前端
编写一个含有表单的HTML 图4
java
网页效果如图 图5
mysql
测试php可正常工做 图6 图7
web
<script language="javascript"> function check(){ var Username =loginform.username.value; var pwd =loginform.password.value; if((Username == "")||(pwd == ""))//若是用户名为空 { alert("用户名或密码不能为空"); return false; } if (pwd.length > 16 || pwd.length < 6) { alert("密码长度应该在 6 - 16 位"); return false; } }
apt-get install mysql
service start/stop/restart mysql
mysql -u root -p
,默认密码为p@ssw0rd查看基本信息:show databases;
图8
sql
修改密码:数据库
mysql> use mysql; mysql> select user, password, host from user; mysql>UPDATE user SET password=PASSWORD("new") WHERE user='root'; mysql>flush privileges; mysql>quit; (退出)
测试新密码对不对apache
# mysql -u root -p Enter password:
CREATE SCHEMA
5218;
(为何在网上查找的CREATE DATABASE 5218;这条语句不能够)USE 5218
SHOW TABLES;
Empty set (0.00 sec)
说明没有数据库表。图10
下面来建立一个数据库表,图11
向表中添加用户,图12
编写登录网页login.html 图13
编写PHP网页链接数据库 图14
在浏览器中输入localhost:8088/login.html,访问本身的登录页面 图15
在登陆页面中输入以前往数据库中添加的用户名和密码,点击提交,登录成功 图16
转到欢迎页面,就是在php中加一行代码header("Refresh:3;url=welcome.php");
,3秒钟后跳转
因此咱们的后台语句:SELECT * FROM users WHERE username='' and password=('')要被变为select * from users where username='' or 1=1#' and password=(''),在用户名框中输入 'or 1=1#,密码随便,能够看到登录成功 图17
同理能够输入语句';insert into users(userid,username,password,enabled) values(123,'zxh',password("20145218"),"TRUE");#来将用户名和密码保存到数据库中,而后再输入用户名zxh,密码20145218,就能够登录了