联合查询注入——字符型
联合查询注入——字符型注入
1.查看界面
初始界面:
查询成功反馈:
查询失败反馈:
可以看见,这次是直接在框中进行输入内容,并且对输入内容均有反馈,在该类型的输入框中,我们可以直接在输入框中进行注入操作,当然, 你喜欢用bp也行,反正我是懒狗。
(当然,在真实的情况中,我们是不知道查询成功的反馈情况的,所以我们需要通过order语句判断回显行数)
2.分析回显行数
判断是否有1行:
1 |
|
判断是否有2行:
1 |
|
判断是否有3行:
1 |
|
当判断第3行时,显示回显错误,说明后端数据库传递过来的数据一共回显两行。接下来尝试or的注入
3.尝试or的注入
尝试让它将用户表所有人的信息查询出来,在后面加上永真的判断注入:
1 |
|
4.获取数据库名
接下来尝试用union的语句进行联合查询注入
1 |
|
通过查询我们获取到了数据库名为pikaqiu,用户名为root
5.获取表名
利用查出来的数据库名称 pikachu 构建payload查询表名
6.获取表
查询pikachu这个数据库发现里面有个users表,查看相关内容:
1 |
|
7.获取表的内容
知道了所属的所有表名,接下由于联合查询要求前后两个SQL语句的列名数要一致,所以这里只能用两个列名进行查询。
1 |
|
8.进行解码
内容和数字型的结果一样需要解码,可以翻阅上一篇文章看就好,不过多阐述了。
联合查询注入——字符型
https://one-null-pointer.github.io/2022/08/09/SQL注入——字符型/