0813.1282天:SQL注入,一般人不告诉你的秘诀

2022-08-13  本文已影响0人  我的职业生涯

#每日三件事,第1282天#

前面有很多文章都说了SQL注入的方法,最重要的就是找到闭合方式,加载payload。

  1. 怎么找闭合方式

闭合方式其实就是为了将原本的SQL查询语句填写完整,并且能够附加新的命令。

假设程序原来的查询语句如此:

select * from user where id =('$id') limit 0,1 

我们可以传递的参数就是id,那么闭合方式就是:

   1') payload --+

单纯通过页面是否有错误提示信息来确定闭合方式是否正确,这个不太可靠。最好时在payload的地方加入可执行的命令,判断其在数据库中是否执行。

以sqli-lab Less-7为例说明,当进行如下输入时:

   http://127.0.0.1:55005/Less-7/?id=1')) --+

此时提醒提示正常。

把单引号换成双引号时:

   http://127.0.0.1:55005/Less-7/?id=1“)) --+

系统提示和上面的一致,都提示为:


提示信息

现在问题来了:到底哪一种闭合方式是正确的呢?

只能加载payload来判断了。用“ and 1=1 ” 和“ and 1=2 ” 来测试。单引号的时候分别提示“You are in……”和语法错误;双引号的时候全部提示”You are in……“。 你怎么判断?

  1. 判定正确的闭合方式

闭合方式正确的时候,paylaod就一定是在数据库中执行过了。关键是怎么简单快速的判断出来。使用sleep函数就可以了。

将payload的部分可以使用sleep函数,如果数据库执行了payload,就可以看到延时;如果没执行,则没有延时。

延时

当然你可以用database、version函数,但结果判断没有sleep方便快捷。

上一篇 下一篇

猜你喜欢

热点阅读