php mysql 执行多条语句_PHP mysqli_multi_query 执行多条语句及 web端回显的问题

问题

问题启发于 sqli-labs的42关,堆叠注入。sqli-labs搭建推荐直接使用Docker。

docker run -dt --name sqli-lab -p [PORT]:80 acgpiano/sqli-labs:latest

其中第42关是个堆叠注入的问题。通过post方式来传递参数。但是这关的username输入有mysqli_real_escape_string函数管着,所以注入点在password。最终构造的sql注入语句为

login_user=admin1&login_password=admin1';create table tesst(id INT,name varchar(100)) %23; &mysubmit=Login

当时,我尝试的时候注入语句没有使用create table语句,而是使用的select sleep(5)。既然是堆叠注入就是都当作sql语句来执行,这个语句应该也是可以执行的,页面应该等待5秒再返回才对。但是,事实并不是这样,页面直接返回了。接下来就是找出为什么是这样的结果。

解决

数据库直接执行注入的语句

使用 Navicat 连接数据库,然后直接执行注入的语句。如下图所示。

461a05d6056c46bf554a85dfbd97af6a.png

语句都成功执行了。说明多条语句执行以及sleep()对于我这个数据库来讲都是没有问题的。

然后就猜测是不是注入语句被什么给过滤处理了。

查看数据库的查询记录,并在终端中直接执行注入语句

上一个博客讲了mysql配置记录查询语句的功能以及查看执行语句历史的方法,这里就不赘述了。直接查看历史记录。

43dd5cb9bada041686a1f5ed5906413e.png

上图中红色圈起来的就是从web界面注入的语句。可以看到输入的语句没有被过滤什么的,成功到了数据库中被执行。但是sleep(5)并没有在web端体现出来,为什么呢?

下面尝试在终

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值