这个JavaEE不知道出了什么问题,配置也配置不好,先这样吧。
32∽40做不了实验先不看了,回去调试,从41开始。
ASP
这个数据库的名字就是自己所有的数据都存在哪个数据库中,放在本地MySQL下面,根据数据用户名和密码识别哪个数据库。

Axercise无连接,无需连接数据库,直接放在文件夹下面用一个路径连接,网站的目录下面。

有的人懒得改默认的名字与位置,所以一下就被找到了数据库的位置。




触发了win7的蓝屏漏洞。
短文件漏洞。

这里前面的就是缩写。
不知道为什么莫名其妙连不上,随便吧。

他这个是搞短文件爆破的吧,直接猜测文件名
IP配置好麻烦,直接看算了。


这个漏洞也好好玩,解析漏洞吧,有分号的时候直接自动把内容执行了。
感觉短文件漏洞本质上也是暴力破解,只不过只有暴力6个。
这就是注入


找后台,可以用短文件漏洞也可以扫描目录。

有1对1数据库管理有一对多数据库。



这运行一下就差不多会了,多一个少一个都会报错。
这个感觉是数据库的那个什么鬼联动而设计的代码。





本地的数据库的话,只有链接的时候才有用,其他的都是猜小数据库的名字
而access就直接全是表。
记录所有的数据库的表。

在这1block这个数据库下面的表。


他说的这个是每个连接数据库下自带的小数据库(默认固定的),里面存储的表。
.是指哪个大数据库下的表
不过这个得大于5.0版本。



是属于哪个数据库下的表
你看到的"分开也能执行",核心是SQL注入拼接改变了原语句结构,且UNION联合查询的语法特性让拆分后的语句依然符合MySQL的执行规则,具体原因拆解如下:
一、核心:SQL注入的"语句拼接篡改"本质
你的PHP代码直接将 $id 拼接到SQL语句中:
php
sql="select \* from demo01 where id=(id)";
当你传入 id=1 union select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema='demo01' 时,恶意参数会和原语句拼接成一个完整的、新的合法SQL语句:
sql
select * from demo01 where id=(1 union select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema='demo01')
并不是"分开执行",而是恶意参数把原单条查询,改造成了包含UNION的复合查询语句,MySQL会将其作为一个整体解析执行。
二、UNION查询的语法特性允许"拆分式拼接"
UNION联合查询的核心规则是前后两个查询的列数必须一致,你的注入语句刚好满足这个条件:
-
原查询 select * from demo01 返回的列数,和你注入的 select 1,2,3,group_concat(table_name),5,6 的列数匹配;
-
MySQL解析时,会将 () 内的 1 union select ... 视为一个子查询,只要子查询语法合法,就会和原查询合并执行,分别获取结果后再合并返回;
-
哪怕你把注入语句拆成多段(比如分多次传参、或语句分段书写),只要最终拼接后的完整语句符合UNION语法,MySQL就会执行。
三、"分开执行"的视觉错觉来源
你看到的"分开",实际是:
-
原语句的部分: select * from demo01 where id=(1 ;
-
注入的部分: union select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema='demo01') 。
这两部分拼接后形成了语法完整的复合查询,MySQL并不会把它们当作两个独立语句,而是按 () 的优先级先执行子查询,再执行外层查询,最终返回联合后的结果(也就是你看到的 admin,gbook,news )。
简单说,不是"分开执行",而是注入参数把原语句补全成了一个合法的复合SQL语句,UNION的语法规则又让这个复合语句能正常执行。
要不要我帮你分析如何通过预处理语句彻底阻断这种UNION注入,并写出对应的防护代码?
就是获取列明的信息必定列出来,然后在那里查询。

前面数据库,后面表名。

回显点,临时插入新的列试


测试有多少例的原因就是因为如果多了或者少了就会插入失败回显失败。

同个连接下面的数据库可以互相的串着查询。

是不是数据库其实就是看表吧。
我大概懂他的意思了,嗯一共只能有一个root,root管理所有的数据库,而其他的数据库没有添加数据库的权利,只有默认的数据库。

普通用户能看到的只有自己的东西。
可以在自己的库下跨库查询。

默认路径文件配置。


截图中提到的** secure-file-priv 是MySQL的核心系统配置变量**,用于限制数据库的文件导入导出操作(如 LOAD_FILE() 、 INTO OUTFILE 、 LOAD DATA INFILE ),是MySQL安全机制的重要组成部分,具体解析如下:
一、 secure-file-priv 的核心作用
该变量严格管控MySQL对服务器本地文件的读写权限,防止恶意通过SQL语句读取/写入服务器敏感文件(如配置文件、密码文件),仅允许在指定路径下执行文件操作。
二、 secure-file-priv 的配置值含义
MySQL中该变量有三种取值,对应不同的权限限制:
-
NULL :完全禁止MySQL的文件导入导出操作, LOAD_FILE() 、 INTO OUTFILE 等函数全部失效。
-
空字符串( '' ):不限制文件操作的路径(极不安全,生产环境禁止使用)。
-
指定具体路径(如 D:\mysql_files\ ):仅允许在该路径下执行文件读写,超出路径的操作会被拒绝。
三、查看与修改该配置的方法
- 查看当前配置值
执行SQL语句:
sql
SHOW VARIABLES LIKE 'secure_file_priv';
或在MySQL配置文件( my.cnf / my.ini )中直接查找 secure-file-priv 配置项。
- 修改配置值
- 编辑MySQL的配置文件( my.cnf (Linux)/ my.ini (Windows)),添加/修改:
ini
示例:限制文件操作仅在D:\mysql_files路径下
secure-file-priv = "D:\\mysql_files"
示例:禁止所有文件操作
secure-file-priv = NULL
- 重启MySQL服务,配置才会生效。
四、与截图中SQL文件读写的关联
截图里的 LOAD_FILE('d:\\1.txt') (读取文件)、 INTO OUTFILE 'd:\\2.txt' (写入文件),必须满足两个条件才能执行:
-
MySQL的 secure-file-priv 配置允许操作该路径(或为空/未限制);
-
执行SQL的数据库用户(如 root / demo )拥有 FILE 权限(需通过 GRANT FILE ON *.* TO '用户'@'主机'; 授权)。
若 secure-file-priv 配置为 D:\mysql_files ,却尝试读写 D:\1.txt ,或用户无 FILE 权限,操作会直接报错被拒绝。
我可以帮你整理一份MySQL文件读写操作的权限与配置检查清单,快速排查 secure-file-priv 和用户权限的问题,需要吗?
这个单引号是容错处理,一般来说不加上这个单引号查询的话如果是数字型就没问题,但如果是字符型的话,他可能就会判断这是个列名,这时就必须要加单引号才能查询列之下的内容。




实现功能的写法是多种多样的,但是他如果这么写的话,你就得考虑一条查询语句的完整性。

每一个操作就是一条命令,就保存在数据库中。

感觉反正只要入库了就可能有注入。

他的逻辑我大概懂了,就是获取叉f f头,然后进行代入查询,第1个是把数据包里面的投封装到一个变量中,然后插入查询。第2个是直接看你这个IP等不等于127.0.0.1,第1个能造成注入第2个不行。
ip


报错,盲注
16进制是不是也可以直行?
报错注入感觉是开了报错的那个回旋符号之后才有用的。

数据库的回旋应该指的就是那种你注入了,然后他直接给你报了一段错的那种吧,就直接把第几行的错显示在上面。
这就是所谓的布尔。

感觉就是靠猜。

布尔必须要有回显,这里回显的意思就是页面是靠数据库的拉去显示的,这和上面显示的差不多。