BUUCTF--[GXYCTF2019]BabySQli详解

本文介绍了通过SQL注入攻击来测试系统安全性的过程,包括利用万能密码尝试登录、解码Base32和Base64、以及如何在没有回显字段时猜测数据库字段类型。此外,还分享了编码在线工具和如何根据错误信息推断账户存在。最后,讨论了如何使用SQL联合查询进行字段探测和构造有效payload进行登录。
摘要由CSDN通过智能技术生成

题目预备知识

  • mysql在查询不存在的数据时会自动构建虚拟数据,一般数据要么明文,要么MD5,源码上用的是md5加密了密码
  • 当具备一定条件并且没有回显字段时,可以盲猜三个字段类型分别为id,username,password

1、经过题目名提示,猜测应该是SQL注入,进入题目,发现一个登录框功能板,确信应该就是SQL注入,开始注入;

这里分享一个小知识点:

  • sql注入可能出现的功能点

登录页面,留言板,修改信息,获取http请求头(User-agent,referer,xff)等只要是和数据库存在交互的功能点都有可能存在。

开始尝试SQL注入万能密码与弱口令

sql万能密码知识点:

先尝试是否存在管理员账户“admin 

                            username:admin   password:1' or '1'='1            

回显:

查看源码发现:

这样一段字符串,这串代码的特征为纯大写+数字,就猜我们最常见的base32

这里推荐一个有着许多编码在线加解密的网址还有一个部分常用的编码特征总结,如果有啥更好的编码在线地址可以在下面评论留下哦

在线编码:

CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码http://www.hiencode.com/

常见编码总结--部分:

编码、解码、总结大全_晨辰.的博客-CSDN博客_核心价值观编码https://blog.csdn.net/zhangyunming666/article/details/123349624

解码后得到

base32解码后得到的数值结尾有两等于号,继续base64解密一下

代码意解就是索引检测你输入的usernam是否在它的数据库中存在


继续由上可知报错翻译为“传错了”,继续尝试使用万能密码登陆:

                              username:admin' or '1'='1     password:123

回显:

后面又试了几种万能密码都报错得”不要黑我“;

下面随便输个用户名和密码上去,看看报错是什么;

”错误的用户“,结合之前的”wrong pass!“,一开始的“传错了”表达不明显是否有admin,现在完全确定是有admin账户的

admin:MySQL数据库中的默认管理员权限账户

做完前提所需工作,现在正式开始进行使用sql注入语句联合查询,进行burp抓包,这样方便些;

开始猜测字段,输入语句:

                                              1' order by 3#

回显如上,应该是过滤了啥,经过不断测试得到

过滤了or,尝试大小写绕过

成功绕过,继续猜测字段数

如上测到第四个字段报错,证明只有3个字段数,但没有回显字段名,来到本题考点:猜测三个字段是啥,一般是idusernamepassword,尝试;

用户名猜测正确,继续猜测第三个字段是否为password;

来到本题考点的另一个:mysql在查询不存在的数据时会自动构建虚拟数据,一般数据要么明文,要么MD5;

密码123经过md5 32进制加密得到:

构造payload:

                        name=1'+union+select+1,'admin','202cb962ac59075b964b07152d234b70'#&pw=123

得到

这里解释一下为什么name那不能等于admin,如果不等于admin才会往后查询,等于admin就不会查询后面了;

还有检测过滤字符的话我这是自己的一个办法,比较笨,也可以使用burp不断进行http请求--fuzz,选择好sql注入语句字典查看响应进行判断过滤字符;


题外话

如果想分享你的一些学习方法或想法可以在下方评论留言

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值