通过靶场head注入对updatexml用法的思考

kanjin   ·   发表于 2021-02-03 15:49:16   ·   技术文章

前言

本人是十一期学员,今天在写head注入的作业的时候,用到了updatexml函数,
寻根究底之,于是有了此文。

正文

本着能省则省的精神,去掉了concat,看看有没有啥影响,结果出现以下问题:
updatexml(0x7e,(select database()),0x7e) #不可输出


updatexml(0x7e,(select user()),0x7e) #可输出


我们发现同样的语法,为啥database() 不能输出,而user()可以输出?
因为user里面有特殊符号@,而且有没有发现 user输出的是从@开始的 前面的用户名被切掉了。

这时我们通过concat在内容前面连上0x7e 即 updatexml(1,concat(0x7e,(select user()),0x7e),1)

@前面的用户名输出出来了。
updatexml(1,concat(0x7e,(select database()),0x7e),1),也可以输出

通过上面我们发现 updatexml 可以通过特殊符号触发报错,而且只会显示特殊符号后面的内容,前面的内容会丢失,这个时候我们就体现concat的用处了,在子查询前面加上特殊符号,无论子查询的内容有没有特殊符号,都会输出,并且不会出现丢失内容的情况。

所以我们最保险的办法就是updatexml(1,concat(0x7e,(select database()),0x7e),1)

总结

updatexml 只能通过特殊符号触发报错,并且只会从特殊符号开始输出内容。

用户名金币积分时间理由
veek 30.00 0 2021-02-04 15:03:26 不错的小Tips

打赏我,让我更有动力~

0 条回复   |  直到 2021-2-3 | 1000 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.