搜索

超简单的Sql注入之万能密码

发布网友 发布时间:2024-12-04 04:47

我来回答

1个回答

热心网友 时间:2024-12-04 06:10

万能密码是一种针对网站登录页面安全漏洞的利用方式,它基于后台没有对用户输入数据进行验证的原理。由于输入的数据被视为合法,无论是否为管理员或非法入侵者,都可以成功登录。万能密码实际上是一种特定格式的账号密码,不涉及真正账号,而是利用SQL注入的手段,通过在查询语句中添加特定参数,绕过正常验证机制,从而获取所有账号和密码。

常见的登录语句形式为:

select * from user where username='输入值1' and password='输入值2'
或者是:

/check.php?username=输入值1&password=输入值2

在进行注入时,会添加额外的参数,使查询语句变成:

select * from user where username='a' or true#' and password='pass'

其中,#在SQL中为注释符,其后内容不起作用。因此,实际执行的SQL语句为:

select * from user where username='a' or true

这里的or true使SQL语句恒成立,查询出所有账号和密码,实现非法登录。除了#之外,SQL中还有--作为注释符,不过它与注释内容之间必须间隔一个空格。

拼接到SQL中大致为:

select * from user where username='a' or true -- a' and password='pass'

在SQL中,非布尔类型数据参与比较运算时会转化为布尔类型。例如,or 1 或者or 1=1,转化为布尔类型true,然后参与或运算,即or true,使条件恒成立,成功登录。

简单来说,万能密码可以表示为:a' or 1 # 或者 a' or 1=1 #,等同于a' or true #。

在登录界面输入万能密码,如admin’ #后,后端将参数添加至SQL中,执行如下:

select * from user where username='admin' #' and password='pass'

由于#为SQL注释符,其后内容无效,实际执行的SQL为:

select * from user where username='admin'

SQL仅在数据库中查询用户名,而非同时查询用户名和密码。因此,只要用户名正确,即可成功登录。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com

热门图文

Top