严禁将本文中的任何信息用于非法目的或对任何未经许可的系统进行测试。未经授权尝试访问计算机系统或数据是违法行为,可能会导致法律后果。
作者不对因阅读本文后采取的任何行动所造成的任何形式的损害负责,包括但不限于直接、间接、特殊、附带或后果性的损害。用户应自行承担使用这些信息的风险。
我们鼓励所有读者遵守法律法规,负责任地使用技术知识,共同维护网络空间的安全与和谐。
- 单引号报错,经典报错注入
- 123'/1/user/' 注出user
- 尝试直接xp_cmdshell命令执行
- 发现存在过滤,打算fuzz查看过滤哪些参数
AES 加解密
- 抓包发现参数加密
- 查看js,很基础的加解密
-
选择字符集:使用 UTF-8 编码。 -
设置密钥:设置密钥为 1234567890abcdef
。 -
设置初始化向量(IV):设置 IV 为 0987654321fedcba
(反转字符串abcdef1234567890
)。 -
选择加密模式:使用 CBC 模式。 -
选择填充方式:使用 PKCS7 填充。 -
选择编码方式:使用 Base64 编码。
- bp爆破热加载加解密
-
过滤参数(GPT直接拉了一个脚本)
- 过滤参数:
or
and
like
into
select
union
order
cursor
for
foreign
--
#
;
=
/*
*/
- 1'/1/@@version/'
- 1'/1/db_name()/' 拿到数据库
- 123'/1/user/' 注出用户名
-
获取列名
- 注了半天本菜狗实在不能直接注出username和password
- 琢磨了一个有点邪教的方式(结果他跟我说靶场写错了,不小心禁用了OR )
- 首先考虑这里是登录点,无非就是去数据库对应的表对比账户密码的值,这里用户名存在注入,说明直接将参数拼接在查询语句了。
- 模拟一下
- select * from 用户表 where username ='用户名' AND password ='密码' username = username and passwd = 123456
- 那就直接拼接让username=username,那么只要密码正确即登录成功。
- 不存在的列名也会通过报错出现提示
- 如:'+use123+' 这里可以猜测爆破用户名的列
-
获取密码:
'+username+'
这里直接爆破密码,密码正确即登录成功,有几个密码就有几个用户名
获取用户名
- 这里拿到两个密码,逆推用户名
- 回到这里,两种方式,一种直接爆破用户名,一种报错注出用户名,毕竟是SQL注入靶场,用报错来。
- select * from 用户表 where username ='用户名' AND password ='密码'
'+username/1+'
这里与获取密码的原理一样,给了正确的密码,数据库去寻找对应密码的账户去除1,字符串不能运算,报错出用户名
- 密码为1的用户名使用
'+username/1+'
却直接登录成功了
- 说明密码为1的用户名是一个数值,我直接就是一个爆破!结果 1/1
文件上传
-
利用NTFS流::$DATA绕过
- 在Windows中如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名
- 例如:phpinfo.php::$DATAWindows会自动去掉末尾的::$DATA变成phpinfo.php
- 注:这是NTFS文件系统具有的特性,FAT32文件系统无法利用
-
上传.user.ini文件绕过
文件包含
- 头像上传处先上传一个php马的png
- http://xxxxxx/include.php?page=about.php
- 简单构造:http://xxxxxx/include.php?page=../uploads/076w.png
提权
- 上马有个360哦,自己想办法搞个免杀马吧,我就不提供了
读取mssql账号密码登录
- 查看版本
- 就用mssql bypass 360那篇文章就好了,我就直接展示了
下载链接:
原文始发于微信公众号(Zer0 sec):Zer0 Sec团队内部实战靶场WP(含靶场下载链接)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论