2019 SUCTF WriteUp
🏛️ 赛事概况
比赛全称:SUCTF 2019
赛事性质:2019 年 XCTF 联赛的国内分站赛,也是一场独立的 CTF 比赛
举办时间:线上赛于 2019 年 8 月举行
主办方:SU 战队
赞助商:XCTF 联赛总体由国家创新与发展战略研究会主办,赛宁网安承办并提供技术支持
🏆 比赛前十名
第 1 名:De1ta (10688分)
第 2 名:Nu1L (10649分)
第 3 名:Venom (8929分)
第 4 名:天枢 Dubhe (8528分)
第 5 名:Kap0K (7810分)
第 6 名:kn0ck (6657分)
第 7 名:W&M (6200分)
第 8 名:X1cT34m (5877分)
第 9 名:凝聚网安工作室 (5360分)
第 10 名:NEX (4827分)
Web
easysql(堆叠注入 + SQL_MOD 绕过)

得到了表名 Flag
1 | 1;show tables;# |

后面查字段也是查不了,根据题目提示 Give me your flag, I will tell you if the flag is right.
这里的功能是验证 flag 是否正确,推测后端肯定是一个查询语句,类似于 SELECT * FROM Flag WHERE flag 这种
谁知道后端语句长这样,太符合 CTF 了。实战中正常开发谁会这么写(我认为有实战意义的题才算是好题)
1 | select $_POST['query'] || flag from Flag; |
SQL_MOD 是 MySQL 支持的基本语法、校验规则
其中 PIPES_AS_CONCAT 会将 || 认为字符串的连接符,而不是或运算符,这时 || 符号就像 concat 函数一样
所以只需要更改 SQL_MOD 配置,然后随便查询一个值就可以得到 flag
1 | 1;set sql_mod=PIPES_AS_CONCAT;select 1 |