less 38

我们打开源码

看到一个叫mysql_connect()的函数打开到一个mysql服务器的新连接,返回一个代表到 MySQL 服务器的连接的对象。

mysql_connect(host,username,password,dbname,prok,socket)
host:必写,表示一个服务器的主机域名
username:必写,表示mysql服务器的用户名
password:可写,表示密码
dbname:可选,表示要连接的数据库
prok:可选,表示mysql服务器的连接端口
socket:可选,表示所要使用的socket和已命名的pipe
socket就是我们在发送时,帮助我们发送保护我们数据,打包数据等的东西,就像一个物流公司一样当我们发送时帮我们进行一系列操作
Alt text

2.mysql_connect_errno()该函数于mysql_connect()有关连,会放回一个错误连接的代码,如果没有连接错误就返回0

3.mysql_select_db()查询所连接数据库的的一些php代码

语法
mysql_select_db(connection,dbname)
connection:必写,规定要使用的mysql的连接,也就是MySQL_connect()的返回值

4.mysqli_error() 函数返回最近调用函数的最后一个错误描述。也就是报错

语法mysqli_error(connection)connection一个mysql服务器的连接

5.mysqli_close(connection); 函数关闭先前打开的数据库连接。成功返回true错误false

6.mysqli_multi_query():执行一个或多个针对数据库的查询

语法:mysqli_multi_query(connection,query)
connection:必选;规定使用的MySQL连接
query:必选;规定一个或者多个查询;中间用分号连接

7.mysqli_more_results()检查是否有更多查询结果

8:mysqli_store_result()将查询结果保存到变量中

9:mysqli_fetch_row()将查询结果一行一行的提取为数组

堆叠注入的原理。

mysqli_multi_query()由于这个语句可以查询多个sql语句,那么将第一个sql语句以分号结束后再写下另一个sql语句这时候就会执行两个语句,而第二个sql语句不仅可以查询还可以对数据库进行修改。

堆叠注入的注入条件

我们都知道堆叠注入是由于sql服务器解析多个sql语句造成的,那么只要服务器可以查询多个语句就存在堆叠注入。也就是后台的查询函数是类似于mysqli_multi_query()的。二mysqli_query()只能执行单sql语句。
增删改查的语句请查看这个语句sql注入的学习
改题目可以直接使用堆叠注入修改数据

1
?id=1'; insert into users(username,password,id)value('dazhuang','111',100)--+


输入
1
?id=1';delete from users where username='dazhuang'


可以看到我们成功的增添和删除了数据库的数据
这样就可以向数据库插入内容了

less39

于38也一样只是闭合不同

less40和41

40为单引号盲注,41为单引号union注入

less42

为post的注入我们查看源码发现,username存在过滤函数mysqli_real_escape_string()会转义特殊字符。所以注入电位password

1
login_password=admin' union select 1,(select database()),3--+&login_user=admin&mysubmit=Login

less43

和上一题一样只是闭合方式不同位’)

less44

该题目为单字符盲注

less45

为单引号括号盲注