80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL

53,【3】BUUCTF WEB october 2019 Twice SQLinjection-CSDN博客

上面这个链接是我第一次接触二次注入

这道题也涉及了

对二次注入不熟悉的可以看看

BUUCTF出了点问题,打不开,以下面这两篇wp作为学习对象

[SUCTF 2018]MultiSQL-CSDN博客

[SUCTF 2018]MultiSQL MYSQL 预处理写-CSDN博客

第一篇前面的1到3步做过了,从第4步开始学习

作者所说的越权访问准确来说属于越权访问中的水平越权

所给的条件表达上涉及以下知识

user() 函数

user() 是 SQL 中的一个系统函数,不同数据库系统中该函数的作用可能略有不同,但通常用于返回当前连接数据库的用户名。例如在 MySQL 中,user() 会返回当前登录用户的名称。

mid(str, pos) 函数

mid() 函数用于从字符串中提取子字符串。mid((user()), 1) 表示从 user() 返回的用户名中提取从第 1 个字符开始的子字符串,这里实际上就是取用户名的第一个字符。

ascii() 函数

ascii() 函数用于返回字符串最左边字符的 ASCII 码值。所以 ascii(mid((user()), 1)) 就是获取当前数据库用户名字符串第一个字符的 ASCII 码值。

if(condition, value_if_true, value_if_false) 函数

if() 是一个条件判断函数。if(ascii(mid((user()),1))>0,1,0) 会判断当前数据库用户名字符串第一个字符的 ASCII 码值是否大于 0,如果大于 0 则返回 1,否则返回 0。由于字符的 ASCII 码值通常都是大于 0 的,所以这个表达式一般会返回 1。

注意:布尔盲注常常使用此种表达式

load_file()函数

是 MySQL 数据库中的一个函数,其主要作用是读取服务器文件系统上的文件内容,并将其作为一个字符串返回。该函数通常用于在 SQL 查询中直接获取文件的文本信息。

预处理(预编译语句)

是一种在数据库操作中广泛使用的技术,用于提高数据库操作的安全性和性能。它将 SQL 语句的编译和执行过程分离,先对 SQL 语句进行预编译,然后再将用户输入的数据绑定到预编译的语句中执行。通过预处理可以绕过转义单引号

剩下的代码与payload去博主的博客里看吧,比较简单

第二篇博主用了堆叠注入,确实,像select等关键字被过滤后的第一想法就应该是堆叠

并且采用了char拼接绕过,char也很常用

(本来想粘一篇我做过的堆叠注入的题,但实在写的差劲,自行搜索学习吧)

最后也可成功执行,绕过

笔记

很像学习SQL时那块知识的复习,不过也有新知识

相关推荐
有谁看见我的剑了?19 分钟前
stress 服务器压力测试的工具学习
服务器·学习·压力测试
有谁看见我的剑了?20 分钟前
stress-ng 服务器压力测试的工具学习
服务器·学习·压力测试
牛奶咖啡131 小时前
学习设计模式《十二》——命令模式
学习·设计模式·命令模式·队列请求·宏命令·可撤销恢复操作·参数化配置
余厌厌厌1 小时前
go语言学习 第9章:映射(Map)
服务器·学习·golang
委婉待续1 小时前
Qt的学习(一)
开发语言·qt·学习
哆啦A梦的口袋呀2 小时前
基于Python学习《Head First设计模式》第七章 适配器和外观模式
python·学习·设计模式
笑鸿的学习笔记2 小时前
虚幻引擎5-Unreal Engine笔记之SET节点的输出引脚获取设置后的最新变量值
笔记·ue5·虚幻
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
学习·安全·web安全·渗透测试·网络安全学习
草莓熊Lotso2 小时前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
东京老树根2 小时前
SAP学习笔记 - 开发27 - 前端Fiori开发 Routing and Navigation(路由和导航)
笔记·学习