搜索型SQL及xx型注入漏洞练习
我们在pikachu平台上点击搜索型注入
我们随便输入一个字,出现上图结果,我们猜测后台应该是用了搜索逻辑
在数据库中它用了like ,来模糊的匹配相应的信息,然后就会把用户名中包含k的查出来
我们按照这样的逻辑,就可以去构造对应的闭合,还是用刚才的思路
like '% %'
中间的payload我们用xxxx%' or 1=1# 来构建 前面的%'是用来抵消单引号 后面的 #是为了把后面的单引号注释掉
我们将这个payload提交一下试试
成功的套出来数据库中的信息
我们通过前三种sql发现,其实核心点就一个 就是运用php语言的语法漏洞,去制作一个闭合,将1=1闭合提交,就能实现数据库的信息泄露
同样的,在xx型中,它的后台代码是这样的
于是我们可以构建一个这样的闭合
('')
xx') or 1=1#
我们再来试试
同样的我们也把数据库中的信息套了出来
但在实际操作过程中,我们一般是不会弄到后台原码的,我们这时候需要经验去判断,它是个什么类型的SQL漏洞,尝试性的去做一些payload去做测试
比如 我们以pikachu中的get型漏洞为例
我们看到这里是让我们输入username,那么根据经验这个地方很可能是字符型sql,不清楚是单引号还是双引号,我们可以做一下测试
发现 这样不行,那我们换成单引号做一下测试
发现 这样就成功了
其实除了 or 1=1 这样的万能语句来尝试之外,我们还有别的方法,判断SQL注入点的关键就在于,我们提交的东西 能不能参与到数据库的SQL里面,如果有,就意味着我们的输入可以拼接到数据库中的SQL进行操作。
比如我们输入kobe' and 1=1#
,因为and 1=1为真,所以我们输入这个就跟单独输入kobe一个效果
点查询,发现符合我们的预期,如果我们输入一个假值。
比如,kobe' and 1=2#
发现这样就不行了,这说明1=1 1=2 这一个部分 是参与了后台数据库的逻辑运算的
意味着 这个地方肯定是存在着sql注入漏洞的
总而言之,不管是哪个一种类型的SQL,我们的做法就是对SQL中的各种类型的输入进行闭合测试,构造合法SQL,欺骗后台执行。