SQL注入之万能密码

SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台
http://www. .com/admin/admin_login.asp
账号:djlfjdslajdfj(随意输入)
密码:1‘or’1’=‘1
1. 用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。用户登录时,后台执行的数据库查询操作(SQL语句)是:【Selectuser_id,user_type,email From users Where user_id=’用户名’ And password=’密码’】。
2.由于网站后台在进行数据库查询的时候没有对单引号进行过滤,当输入用户名【admin】和万能密码【2’or’1】时,执行的SQL语句为:【Select user_id,user_type,email From users Where user_id=’admin’ And password=’2’or’1’】。3.由于SQL语句中逻辑运算符具有优先级,【=】优先于【and】,【and】优先于【or】,且适用传递性。因此,此SQL语句在后台解析时,分成两句:【Select user_id,user_type,email From users Where user_id=’admin’ And password=’2’】和【’1’】,两句bool值进行逻辑or运算,恒为TRUE。SQL语句的查询结果为TRUE,就意味着认证成功,也可以登录到系统中。
输入用户名【admin】,密码【2’or’1】,即可登录成功。(加粗部分为切入点,其他随意填写)
在网站开发中也有些人是这样做的,T_users是表名,username是数据库中字段名,name和pwd是变量。
"select * form T_users where username=’ “+ name +” ’ “+” and password=’ “+ pwd +” ’ ";
如果变量name赋值为root,pwd变量赋值为root的话,这根本不会有什么问题,和上面一模一样。
即等价于"select * from T_users where username= ‘root’ and password= ‘root’ "
3.但是如果变量name赋值:随意输入,而pwd被赋值 1 or 1=1 ,
那么整个语句就变成了这个样子:
"select from T_users where username=‘adsfafsf’ and password=‘1 or 1=1’ "
可以看出,此时整个查询语句返回值始终为true.
万能密码形式:‘or’=‘or’ *
例如:select * from table where username=’’ or ‘=’ or ‘’ and password=’’; //and优先于or,且’='为真
类似形式还有:
“or"a”="a
')or(‘a’='a
")or(“a”="a
‘or 1=1–
“or 1=1–
'or”=’
'or 1=1%00
'or 1=1/

admin’ or 1=1/*
SQL注入的漏洞源码如下(输入万能密码即可登录)
using System;
using System.Data.SqlClient;
namespace 第一个数据库程序
{
class Program
{
static void Main(string[] args)
{
//解决数据库添加不进去数据,两个mdf问题冲突问题代码,即.
/***************************************************/

        string dataDir = AppDomain.CurrentDomain.BaseDirectory;if (dataDir.EndsWith(@"\bin\Debug\")|| dataDir.EndsWith(@"\bin\Release\")){dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);}/************************************************/Console.WriteLine("请输入用户名:");string user = Console.ReadLine();Console.WriteLine("请输入密码:");string pwd = Console.ReadLine();//与数据库建立连接using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();//打开连接//创建sql语句命令using (SqlCommand cmd = conn.CreateCommand()){//SQL语句查询命令cmd.CommandText = " select * from [T_users] where username='"+ user + "'" + "and password='" + pwd + "'" ;int i = Convert.ToInt32(cmd.ExecuteScalar());//返回第一行第一列的值if (i > 0){Console.WriteLine("登陆成功!");}else {Console.WriteLine("登陆失败!");}}}Console.ReadKey();}
}

}
修改源码:(万能密码不可用)
using System;
using System.Data.SqlClient;
namespace 第一个数据库程序
{
class Program
{
static void Main(string[] args)
{
//解决数据库添加不进去数据,两个mdf问题冲突问题代码,即.
/***************************************************/

        string dataDir = AppDomain.CurrentDomain.BaseDirectory;if (dataDir.EndsWith(@"\bin\Debug\")|| dataDir.EndsWith(@"\bin\Release\")){dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);}/************************************************/Console.WriteLine("请输入用户名:");string user = Console.ReadLine();Console.WriteLine("请输入密码:");string pwd = Console.ReadLine();//与数据库建立连接using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();//打开连接//创建SQL命令语句using (SqlCommand cmd = conn.CreateCommand()){//SQL查询语句cmd.CommandText = "select * from T_users where username=@NAME and password=@PW";cmd.Parameters.Add(new SqlParameter("NAME", user));//NAME 和PW是参数,名字自己随意取,但必须和上面的一致。cmd.Parameters.Add(new SqlParameter("PW", pwd));int i = Convert.ToInt32(cmd.ExecuteScalar());//函数返回第一行第一列的值if (i > 0){Console.WriteLine("登陆成功!");}else{Console.WriteLine("登陆失败!");}}}Console.ReadKey();}
}

}

注:部分转自百度

SQL注入之万能密码相关推荐

  1. mysql登录框万能密码_Sqli-LABS通关笔录-11[sql注入之万能密码以及登录框报错注入]...

    在这一关卡我学到了 1.万能密码的构造,大概的去揣测正常的SQL语句是如何的. 2. 3. 00x1SQL万能密码的构造 在登录框当中可以添加了一个单引号.报错信息如下所示: 据此报错,我们大概的可以 ...

  2. SQL注入与万能密码登录

    今天的靶机是一个主要面向web应用程序的框架.更具体地说,我们将了解如何对启用了SQL数据库的web应用程序执行SQL注入.我们的目标是具有针对后端数据库的搜索功能的网站,该数据库包含易受此攻击的可搜 ...

  3. php密码注入,php防止sql注入之万能密码以及防范

    说什么叫sql注入呢? 就是在登录.注册.input中输入一些影响sql语句的代码 导致你的sql语句出现问题,比如说这个问题: select * from web_manage where user ...

  4. sql注入之万能密码总结

    万能密码 万能密码原理 原验证登陆语句: SELECT * FROM admin WHERE Username= '".$username."' AND Password= '&q ...

  5. SQL手工注入原理万能密码及默认密码登陆后台

    SQL手工注入原理: 下面就是比较笨的方法了==    一个一个试 (* ̄rǒ ̄) 针对于.asp后缀网 + ?id_  在后面加入下面代码,返回正确那就是无注入点,反正就是有注入点 一.什么是SQL ...

  6. sql注入:万能钥匙注入

    根据提示,这道题使用sql输入,题目中说已经使用过滤,但是我们还是要试试,看看是不是所有特殊字符都被过滤了, 如图,进行尝试之后,得到结果: 可知,引号没有被过滤.所以我们可以使用万能密码. 万能密码 ...

  7. SQL注入(万能句型‘ or 1=1 -‘)

    环境:mysql.PHP 数据库:  php代码 <html> <head><title>SQLInjection</title> </head& ...

  8. BBSXP最新漏洞 简单注入检测 万能密码

    BBSXP最新漏洞 漏洞日期:2005年7月1日 受害版本:目前所有BBSXP 漏洞利用: 查前台密码注入语句: blog.asp?id=1%20union%20select%201,1,userpa ...

  9. Wmm的学习日记(SQL注入基础)

    这周听了一节三个半小时的网课,有关sql注入,消除了我对sql注入的"恐惧",也算是浅浅入了下门吧,虽然学会了点皮毛,但是还是成就感满满,哈哈哈,从0到0.001也是一件值得庆祝的 ...

  10. SQL注入原理以及预防措施

    1.SQL注入原理 就是通过利用一些查询语句的漏洞,将SQL语句传递到服务器解析并执行的一种攻击手段.SQL注入是一种注入攻击,可以执行恶意SQL语句.它通过将任意SQL代码插入数据库查询,使攻击者能 ...

最新文章

  1. enyo官方开发入门教程翻译一Layout之Fittables
  2. easyui combogrid分页加载默认值时无法自动跳转到相应页的解决方案
  3. PHP手机号中间四位用星号*代替显示
  4. python中getrandbits函数用法_python random - 刘江的python教程
  5. [css] 说下line-height三种赋值方式有何区别?
  6. 牛腩购物网 8 整合用户留言 重装系统之后iis7.5 sql2008 vs2010安装顺序,AspNetPager 控件的使用,为什么 anp.StartRecordIndex 总是为1...
  7. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·005
  8. JavaScriptjQuery.检测相等和存在
  9. 协程实现多边同时交互原理
  10. aliyun redis 链接超时_超详细的Redis入门指导
  11. c 语言基础笔试题1
  12. 这次跟大家聊聊技术,也聊聊人生
  13. 梅科尔工作室-OpenEuler培训第二讲笔记
  14. WIN下静默安装MSI文件
  15. 设计一个长方形类 java_用java设计一个长方形类,成员变量包括长和宽.方法:计算面积和周长,有相应的set和get方法...
  16. van-popup() 点击空白处关闭弹窗
  17. 读书笔记-----跟任何人都聊得来
  18. pycharm发送邮件(QQ邮箱和网易163为例)
  19. 小型电梯尺寸_家用别墅小型电梯介绍:品牌、大概价格及尺寸等
  20. 原生JS鼠标移动拖尾效果

热门文章

  1. python调用按键精灵插件_按键精灵 插件命令 重中之重务必要记住怎么操作
  2. 微博粉丝精灵_微信全国500强、微博粉丝数省内领先……看快报这群年轻人如何运营一个个人气平台...
  3. ios加密算法AES
  4. ADADELTA: AN ADAPTIVE LEARNING RATE METHOD
  5. 加密狗通过USB SERVER远程连接
  6. 关于Docker镜像再封装的详细文档
  7. Java开发工程师如何做好职业规划和成长路线
  8. 数据库MySQL数据查询---模糊查询(like和relike(或regexp))
  9. Mybatis——持久层框架
  10. matlab网格划分提取坐标,ANSYS-划分网格后导出单元和结点坐标等信息