| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> [SWPU2019]Web1 (bypass information_schema,无列名注入) -> 正文阅读 |
|
[大数据][SWPU2019]Web1 (bypass information_schema,无列名注入) |
打开环境,是个登录框: 注册账号,登录后,有个广告发布,随便输入后查看详情后会回显: 一下子就会想到是xss,于是我试了一下,果然还真存在xss: ?但是后来才知道没用,是个SQL题,注入点在标题那: ?按照步骤来,发现or,#都被过滤,空格会被消除,空格简单,用/**/就能绕过,但order by和information_schema都不能用,那咋判断字段数,不会要用union select一个个试吧(那这个题可能要搞傻),其实还可以用group by:
(注释符#用 判断出有22个字段,接着用联合注入:
?得到数据库名:web1 接着报表名,information_schena不能用,此处要用到其他知识: 我们知道infromation_schema库的作用无非就是可以获取到table_schema,table_name,column_name这些数据库内的信息,下面两种方法能绕过: 1.InnoDb引擎 经过尝试第一种方法可行:
注意: 这个地方一定要在前面可显示的位置2,3用select查出表名,因为union select查的是当前数据库中的内容,且有22个字段,如果将from/**/mysql.innodb_table_stats写在数字后面就查不出。 得到了5张表,但是用上面的InnoDb引擎方法没法查出列名,因为其中没有存储列名,这里就要用到无列名注入了。 先来了解一下原理: 正常的查询是这样的:
?这就相当于改了表的列名。之后。我们将某一列取出来即可
?有些时候程序还会过滤反引号,语句就不能正常执行了。但我们还可以通过别名替代反引号 as 取别名。将select 1,2,3 union select * from user中要查询的一列取别名为b。个人感觉就像是赋值给变量差不多: ?这里都是分列的。可以通过group_concat来拼接字符串一起输出: 晓得了原理后回到这个题,尝试后答案在users表中,在可以用下面的payload:
至于为什么有三列(select/**/1,2,3),mysql数据库一般第一列是编号,第二列一般是user之类的,第三列一般都是password: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:57:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |