SQL注入-万能密码
Posted Labs安全研习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入-万能密码相关的知识,希望对你有一定的参考价值。
大家好,今天小编给大家准备的是一道以用户名和密码为SQL注入点的题目,具体看下面。
题目链接
http://lab1.xseclab.com/sqli2_3265b4852c13383560327d1c31550b60/index.php
打开链接,我们看到如下页面
我们先来看一下后台服务器是如何处理在页面上输入的用户名和密码的。理论上来说当我们在页面上点击“登录”后,后台认证程序会有如下SQL语句
String sql = "select * from usertable where username='userName' and password='password'";
所以,我们用拼接SQL字符串来实现SQL注入,首先输入admin’ or 1=1 --,密码随意输入,这里小编用的qq
发现页面有如下报错
先来分析下,当我们输入了用户名和密码后,上面的SQL语句变成
select * from usertable where username=‘admin' or 1=1-- and password='qq'";
分析SQL语句:条件后面username=‘admin' or 1=1 用户名等于‘admin’或1=1 那么这个条件一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
但是我们这里报错了,说明注释字符“--”被过滤了,于是我们用“#”来代替,输入如下
于是我们找到flag如下
显然,我们这里输入的‘admin’用户名是没有起什么作用的,那么我们来试试空用户名
同样我们可以得到如下结果
以上是关于SQL注入-万能密码的主要内容,如果未能解决你的问题,请参考以下文章
防止sql注入方法 如何防止java中将MySQL的数据库验证密码加上 ' or '1'= '1 就可以出现万能密码 的PreparedStatement