[GXYCTF2019]BabySQli
进入题目一个登录框
对登录框做了一些常规的sql注入和fuzz发现都无果。然后在等级登录后跳转的search.php页面查看源代码发现一段编码。
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
发现其是一段base32编码,解码后发现又是一段base64编码。
c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
然后base64解码
select * from user where username = '$name'
所以知道了sql语句为select * from user where username = '$name',然后用联合查询进行测试字段数。
两个字段发现报错
三个字段不报错,证明sql查询一共又三个字段。
根据提示可以知道是pass密码错误,所以是又admin这个账号的,那我们接下来测试用户这个字段到底在哪一个字段当中。
测试1' union select 'admin',2,3#发现user错误
测试1' union select 1,'admin',3#,发现是pass密码错误,所以知道第2个字段为user字段
然后这里卡了好久,不知到search.php到底是怎么写的,然后直接看了下search.php的源代码,做题的时候源代码应该是看不到的,这里是buuctf为标明题目出处放在这的。
<!--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."'";
$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{$arr = mysqli_fetch_row($result);if($arr[1] == "admin"){if(md5($password) == $arr[2]){echo $flag;}else{die("wrong pass!");}}else{die("wrong user!");}}
}?>
然后发现password有被MD5进行加密,他喵的,这题目出的,一点提示也没有。
if($arr[1] == "admin"){if(md5($password) == $arr[2]){echo $flag;}else{die("wrong pass!");}
}
else{die("wrong user!");
知道了MD5加密了password后,那就是将查询出来的passwd和输入的密码的md5值比较,相等则登录得到flag不相等则wrong pass。
就是我们的sql语句执行时,password字段中的内容要==md5(我们密码栏输入的password)。接下里就是要绕过密码的md5验证,需要把我们输入的值和数据库里面存放的用户密码的md5值进行比较,那要怎么绕过呢?可以用联合查询语句用来生成虚拟的表数据。
学到了联合注入有个技巧。在联合查询并不存在的数据时,联合查询就会构造一个 虚拟的数据。 举个例子:
最初users表中只有一行数据,
我们通过union select查询就可以构造一行虚拟的数据,
如上图,我们在users表中利用联合查询创建了一行虚拟的数据。
我们的思路就来了,我们可以利用联合查询来创建一行admin账户的续集数据,混淆admin用户的密码,将我们自定义的admin用户的密码(123)加进去,这样我们不就可以登录admin用户了吗。
在用户名登录框输入1' union select 1,'admin','202cb962ac59075b964b07152d234b70'#其中202cb962ac59075b964b07152d234b70为123的MD5值,然后在密码登录框中输入123即可登录。
原文于:https://www.cnblogs.com/sfsec/p/15215102.html
[GXYCTF2019]BabySQli相关推荐
- BUUCTF [GXYCTF2019]BabySQli 1
刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!# 打开容器 就单单两个输入栏,,多少有点简陋 看标签叫Do you know who am I?看来是要用,先用万能 ...
- BUUCTF | [GXYCTF2019]BabySQli
BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...
- 【buu平台】[GXYCTF2019]BabySQli
[buu平台][GXYCTF2019]BabySQli 查看页面源代码发现search.php,文件中有一段base32编码 [base32是由大写字母和数字构成,其结尾有三个等号,base64由大小 ...
- buuctf [GXYCTF2019]BabySQli
今日份习题 名字叫babysqli 主界面是一个登陆页面,看起来好像不难的亚子 开搞! 通过尝试发现or,=,()都被过滤了 输入的时候,一个是wrong user,一个是wrong pass,尝试抓 ...
- buuctf [GXYCTF2019]BabySQli
常规sql注入都行不通,查看源码发现一个search.php, 先说说base32 和 base64 的区别, base32 只有大写字母和数字数字组成,或者后面有三个等号. base64 只有大写字 ...
- [ buuctf GXYCTF2019]BabySQli
输入账户 密码 后查看源代码 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VS ...
- BUUCTF之[GXYCTF2019]BabySQli
题目 这题看到这个页面,而且题目上说的.给人的感觉就是个SQL注入题.... 启动BurpSuite抓包看看 有两个可疑点: 一是报用户错误(wrong user!),通常如果有这种错误的时候要先爆破 ...
- BUUCTF——[GXYCTF2019]BabySQli
文章目录 利用点 解题 分析 完 利用点 SQL字符型注入 UNION SELECT联合查询特性 解题 search.php的注释发现hint <!--MMZFM422K5HDASKDN5TVU ...
- BUUCTF[GXYCTF2019]BabySQli
SQL注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码: <meta http-equiv="Content-Type" content=&qu ...
最新文章
- html文字随机变色效果,html肿么让字体得到随机颜色
- Java并发编程之介绍
- DVWA学习(二)SQL Injection(Blind)
- 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
- java对cpu线程的要求_java-CPU份额对线程有什么影响
- 电脑计算机d盘有用吗,d盘不见了,教您电脑d盘不见了怎么解决
- [摘抄] 资深软件项目经理/产品经理“扯皮技巧”汇总(新手入坑必读,不定期更新)...
- hadoop 3.x 配置历史服务器
- 《mysql必知必会》学习_第八章_20180730_欢
- spring的IOC——依赖注入的两种实现类型
- 利用kali自带的msfvenom工具生成远程控制软件(木马)
- mysql计算环比增长率
- 子目录和子域名哪个好?子目录和子域名如何利用seo优化?
- 自动化测试框架rf(Robot Framework)的安装
- 小Biu的区间和——UPC
- js删除数组中指定对象
- Windows睡眠,CPU风扇仍然运转的问题
- 安卓APP开发之工程构建
- 关于iPhone X下Home Indicator(白条)的隐藏和延迟响应
- mac DBeaver连接mysql 驱动失败问题