内容简介: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框架中服务端模板注入问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Art of Computer Programming, Volume 4, Fascicle 3
Donald E. Knuth / Addison-Wesley Professional / 2005-08-05 / USD 19.99
Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and ......一起来看看 《The Art of Computer Programming, Volume 4, Fascicle 3》 这本书的介绍吧!