首页 > 数据库技术 > 详细

sqli-labs:Less-11

时间:2020-04-02 23:52:47      阅读:120      评论:0      收藏:0      [点我收藏+]

从Less11开始和前面的有所不同最大的一点就是:前面的都是Get方法,而现在开始的是POST方法。

Less-11实验主要是:单引号字符注入

从登陆界面的样子,最直接想到的就是“万能密码”。
我们先看一下源码,发现sql语句是这样的:
技术分享图片

从这个代码里我们看到用户的地方输入用户名,而不能在用户名后闭合用前面的%23来注释后面的,如果注释了整个语句会出错。所以要保证整个语句正确一般有两种方法,要么在用户名位置构造返回是ture,要么在密码地方构造。

  1. 在用户名位置构造
    构造的用户名在数据库中要存在,这里我们猜测会不用admin这样的用户名。
    在用户名位置输入 admin‘ or ‘1‘=‘1 密码位置随便输入任意内容
    技术分享图片

点击提交后,我们可以以用户admin登录进入
技术分享图片

  1. 在密码位置构造
    在用户名位置输入任意名字, 密码位置随便输入sdfsd‘ or ‘1‘=‘1
    技术分享图片
    点击提交后,我们发现这里以数据库users表的第一个用户登录进去的。

这里出现这样的原因其实通过分析构造的两个语句就能看出来了:
select * from users where username=‘admin‘ or ‘1‘=‘1‘ and password=‘fsdfs‘ 如果这里不用admin用的别的,那么接下来语句就是ture,语句被执行,返回的是空内容;所以username中的内容表中必须有。
select * from users where username=‘aaa‘ and password=‘sdfsd‘ or ‘1‘=‘1‘ 而这一句其实等同于 select * from users where ‘1‘=‘1‘ ,这就是直接执行select * from users 无任何条件。
大家就明白为什么在密码处构造不需要知道用户名是什么,也就是常说的万能密码,但登陆进去的一定是第一个用户。

sqli-labs:Less-11

原文:https://www.cnblogs.com/tangjf10/p/12623725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!