pikachu漏洞练习第四章节SQL注入-字符型注入(get)练习收获

Get方式中使用URL提交注入数据:

练习部分

打开pikachu靶场的字符型注入(get)部分。同时打开brupsite抓包。发现输入随机数字显示提示错误,输入之前靶场使用过的名字字符发现网页反馈了相关数据信息。

我们用上一节SQL注入-数字型注入(post)的思路,可以判断网页是使用了数据库用数据库语句提取出的信息

语句为

select 字段1,字段2 from 表名 where username='name'

和之前SQL注入-数字型注入(post)的思路相同,要输出出来全部的数据库信息就要增加 1 or 1=1在最后。

输入allen or 1=1 查询,却不能像之前一样显示出所有数据。

这是因为文本框中检测的是字符变量,如果我们直接输入的话会判定allen or 1=1为整个字符串‘allen or 1=1’。要让其变成字符串而是成为sql语句就让整个语句需要改为

select 字段1,字段2 from 表名 where username = 'name' or 1=1#';

第二个我们输入的单引号与语句中的第一个单引号闭合,最后的语句单引号被我们输入的井号字符给注释掉。(双横线加空格-- 替换掉井号字符也可以注释掉单引号)

在网页中输入

name' or 1=1#

测试。

成功让所有数据库数据输出出来。完成对该漏洞的利用。

### Pikachu靶场中的SQL注入字符型攻击方法 在Pikachu靶场中,字符型SQL注入是一种常见的漏洞利用形式。当应用程序未能正确过滤用户输入并将其直接拼接到SQL语句中执行时,就可能发生这种类型的攻击。 对于字符型SQL注入,在`http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=vince%22&submit=%E6%9F%A5%E8%AF%A2`这个URL中,参数`name`是一个字符串类型的数据[^2]。如果该参数未被适当处理,则可以通过构造特定的输入来操纵后台SQL查询逻辑。 #### 构造恶意请求 假设存在如下SQL查询: ```sql SELECT * FROM users WHERE username='vince"' ``` 通过向`name`参数附加特殊字符(如单引号),可以改变原有SQL语句结构,从而实现不同目的的操作。例如,尝试闭合当前条件并通过OR子句绕过验证: ```bash http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=vince'%20or%20'1'%3D'1 ``` 这会使得最终形成的SQL变为: ```sql SELECT * FROM users WHERE username='vince' or '1'='1' ``` 上述操作将返回所有符合条件的结果集而不是仅限于指定用户的记录。 #### 获取更多信息 为了进一步探索数据库内部情况,可采用联合查询的方式提取额外数据。比如想要知道当前使用的MySQL版本信息,可以在原基础上追加UNION SELECT语句: ```bash http://127.0.0.1/pikchu/vul/sqli/sqli_str.php?name=vince'%20union%20select%20@@version--+ ``` 此命令将会把服务器端运行环境下的MySQL版本展示出来。 需要注意的是,实际渗透测试过程中应当遵循合法授权范围内的活动准则,并且只针对允许测试的目标实施此类技术研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值