BUU28 [GXYCTF2019]BabySQli1

常规万能密码,发现登不上去

过滤掉了or,=,当尝试了n种方法以后,最关键的是发现()居然也被过滤了

哈哈,那玩个淡,

再搜wp!!

当输入admin的时候,提示密码错误,这时候就说明用户名确实是admin

抓包发现有注释掉的内容,其实这个直接看源代码也行(但是又忘了这步)

这串代码先用base32解码,再用base64解码(菜还是得多练)

二者区别:

  • Base64
    • Base64 编码使用的字符集包含 A - Za - z0 - 9 以及 +/ 这 64 个字符。当编码的数据长度不是 3 的倍数时,会用 = 作为填充字符。
    • 例如,对字符串 "hello" 进行 Base64 编码后得到 "aGVsbG8=",其中可以看到编码结果中包含了字符集内的字母、数字以及填充字符 =。【两个等号也是它的标志】
  • Base32
    • Base32 编码使用的字符集是 A - Z2 - 7 这 32 个字符。同样,当编码的数据长度不是 5 的倍数时,也会用 = 作为填充字符。通常不区分大小写
    • 比如,对字符串 "hello" 进行 Base32 编码后得到 "NBSWY3DP",编码结果只包含字符集内的大写字母和部分数字。

表有三列:

错误查询方式:1' and select 1,2,3#

在这个拼接后的语句中,and 关键字后面紧接着 select,这不符合 SQL 的语法规则。在 SQL 里,and 是用于连接条件表达式的逻辑运算符,而 select 是用于开始一个查询的关键字,它们不能这样直接组合在一起,所以会导致语法错误。

正确查询: 1' union select 1,2,3#

如果SQL后台的代码长这样:

sql 复制代码
SELECT * FROM users WHERE name = '$name' AND pw = '$pw';

那么注入以后就是:

sql 复制代码
SELECT * FROM users WHERE name = '1' union select 1,'admin','47bce5c74f589f4867dbd57e9ca9f808'#' AND pw = 'aaa';

UNION 用于将两个或多个 SELECT 语句的结果集合并成一个结果集。要使用union,必须要使每个 SELECT 语句的列数相同。

users 表的列数为 3 且数据类型兼容,注入的 SELECT 语句会与原 SELECT 语句的结果集合并。select 1,'admin','47bce5c74f589f4867dbd57e9ca9f808' 会返回一行数据,其中第一列值为 1,第二列值为 'admin',第三列值为 '47bce5c74f589f4867dbd57e9ca9f808'。应用程序可能会将这行数据当作合法的用户记录进行处理,攻击者可能会以 admin 用户的身份登录系统。

union做查询时,查询的数据不存在,那么联合查询就会创建一个虚拟的数据存放在数据库中

源代码中也有暗示:admin在数据表第二列,password在第三列

抄的另一种解法:

相关推荐
sdm0704273 分钟前
应用层自定义协议
运维·服务器·网络
Agent产品评测局10 分钟前
标准化产品vs定制开发,制造业自动化方案选型横评:2026工业智能体落地深度指南
运维·人工智能·ai·chatgpt·自动化
bush415 分钟前
linux开发板连接virtualbox虚拟机ubuntu的usb网卡,访问外网方法。
linux·运维·ubuntu
VOOHU-沃虎26 分钟前
VOOHU——防水RJ45连接器在户外网络设备中的应用与选型
运维·服务器·网络
晴天¥29 分钟前
达梦数据库的内存结构
服务器·数据库·达梦数据库
yyuuuzz1 小时前
谷歌云使用的几个常见注意事项
运维·服务器·网络·安全·web安全·云计算·aws
大明者省1 小时前
完整 Ubuntu 服务器 XFCE 桌面 + XRDP 远程桌面 部署使用全流程
运维·服务器·ubuntu
上海云盾-小余1 小时前
业务层 CC 攻击精准研判:行为识别与轻量化拦截方案
运维·服务器·安全·架构
Wpa.wk1 小时前
APP自动化-Appium原理
运维·appium·自动化