任意修改其他用户的绑定手机号码
某些网站在用户注册的时候,要求用户绑定自己的手机号码,常常使用的逻辑是:用户注册完成之后,输入自己的手机号码,获取一条验证码,然后将用户名、手机号码、验证码一起提交给服务器保存,网站服务器端没有验证绑定手机号码的用户名是否和之前注册的用户名一致,导致安全问题的产生,攻击者能够抓取提交给服务器的这个数据包,将用户名修改为其他用户的用户名,将其他用户的账号绑定到自己的手机,然后重置其他人的密码。
某些网站在用户注册的时候,要求用户绑定自己的手机号码,常常使用的逻辑是:用户注册完成之后,输入自己的手机号码,获取一条验证码,然后将用户名、手机号码、验证码一起提交给服务器保存,网站服务器端没有验证绑定手机号码的用户名是否和之前注册的用户名一致,导致安全问题的产生,攻击者能够抓取提交给服务器的这个数据包,将用户名修改为其他用户的用户名,将其他用户的账号绑定到自己的手机,然后重置其他人的密码。
阿里云ECS服务器:
是一种弹性计算服务,支持各种应用软件灵活扩展,需要有专业技术人员来维护。适合有技术实力、懂得服务器配置及维护的用户及开发者。
阿里云虚拟主机:
云虚拟主机即通过相关技术把一台服务器划分成多个一定大小的空间,每个空间都给予单独的FTP权限和Web访问权限,多个用户共同平均使用这台服务器的硬件资源。共享云虚拟主机资源共享,空间较大,固定流量,经济实惠,可以满足个人基本建站需求。
独享云虚拟主机:
云虚拟主机分为共享云虚拟主机和独享云虚拟主机。优点是CPU、内存、带宽、硬盘均为独享,且不限流量、独立IP、预装了网站应用环境就和数据库环境,同时具备了虚机和服务器的优势,且提供可视化操作的控制面板环境,操作简单,即买即用。独享资源,空间超大,不限流量,更高配置,适合中小企业使用。
云虚拟主机主机和云服务器区别:
虚拟主机有单独的面板管理,通过ftp更新网站,一般只能放一个站点,功能有限,只能进行资源的存储和访问;云服务器给你一个完全的服务器操作系统控制,可以搭建多个网站,并可以自己配置开发环境,一般需要远程管理,自己配置环境,站点个数和流量不限制。
今天在进行测试的时候,发现网站网站使用的是SQL SERVER 数据库,数据库文件为xxx_Data.MDF和xxx_Log.LDF,数据库在使用期间,两个文件会拒绝访问,用户无法对其进行其他操作,想要脱库,可以考虑使用SQL SERVER备份数据库的方法,在网站的配置文件中找到使用的数据库的数据库名,备份到网站的目录下,最好备份为rar文件,然后通过http下载,下载完成之后,将文件名改为bak,然后使用Microsoft SQL Server Management Studio还原即可。
命令如下:
参数介绍:
-U 指定连接的用户
-P 密码
-Q 执行的SQL语句
多数站点服务器都会安装winRAR,如果获得的Webshell能够运行exe文件,你就可以使用WinRAR.exe对目录进行打包。
把C:\SW\目录下的所有东西打包为root.rar放到C:\目录下,以便下载,命令如下:
参数说明:
a 添加文件到压缩文件中
-k 锁定压缩文件
-s产生固体存档,这样可以增大压缩比
-r包括子目录
-m1 设置压缩比
-m0 存储 添加到压缩文件时不压缩文件。
-m1 最快 使用最快方式(低压缩)
-m2 较快 使用快速压缩方式
-m3 标准 使用标准(默认)压缩方式
-m4 较好 使用较好压缩方式(较好压缩,但是慢)
-m5 最好 使用最大压缩方式(最好的压缩,但是最慢)
注意:在菜刀中使用该方法对网站目录打包时,菜刀返回结果可能提示失败,实际上命令已经执行完成,可能的原因是网站源码很大,打包需要比较长的时间,等命令执行完成之后,返回到备份的路径下刷新,看看是否打包完成。
注意:使用WinRAR在打包的时候,在服务器桌面上回显示打包的界面,如果这个时候管理员在线就完了,不过我们可以使用另一个命令:
使用rar命令在进行压缩的时候,不会在桌面显示压缩窗口。
问题:
今天在做测试的时候,发现使用burp suite无法抓取登录的数据包,而有的时候又能抓到。
解决办法:
原因是程序前端通过js限制了用户名和密码的长度,若用户输入的不符合规则,浏览器不会发送数据包,提示的错误信息和用户输入的账号密码符合规则,但是输入有误的错误信息相同,所以比较难分辨这种情况。
有的过滤器会过滤掉SQL语句中的关键字,比如SELECT,FROM等,因为数据库使用不区分大小写的方式来处理SQL关键字,所以可以使用大小写变种来绕过,例如:
' UNION SELECT password FROM USERS WHERE username='admin'--
可以替换成:
' UNiON SelECT password FRoM USERS WHErE username='admin'--
有的过滤器会过滤掉注入语句中的空格字符,可以考虑使用内联注释的方法绕过:
'/**/UNION/**/SELECT/**/password/**/FROM/**/USERS/**/WHERE/**/username='admin'--
如果同时过滤了‘=’,可以使用‘LIKE’关键字来替换:
'/**/UNION/**/SELECT/**/password/**/FROM/**/USERS/**/WHERE/**/username/**/LIKE/**/'admin'--
注意:在MySQL中,甚至可以在关键字中使用内联注释来绕过WAF的关键字拦截:
'/**/UN/**/ION/**/SEL/**/ECT/**/password/**/FR/**/OM/**/USERS/**/WH/**/ERE/**/username/**/LIKE/**/'admin'--
实际测试中,该方法行不通。
如下图,正常情况下,流量会从网络入口,经过核心路由器和路由器,到达业务服务器,同时在网络入口会将流量做镜像,复制一份,到达DDoS攻击预警模块,预警模块会对流量进行分析,如果发现了攻击行为,会通知DDoS防护管理中心,然后触发清洗路由器,将原来的流量迁移到DDoS攻击清理集群,然后将清洗完成后的流量回注到核心路由器。
大家都知道Http协议中参数的传输是”key=value”这种键值对形式,如果要传多个参数就需要用“&”符号对键值对进行分割。如”?name1=value1&name2=value2”,这样服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。
针对“name1=value1&name2=value2”,客户端到服务端的解析过程如下:
上述字符串在计算机中用ASCII码表示为:
服务端在接收到该数据后就会遍历该字节流,首先一个字节一个字节的吃,当吃到3D这字节后,服务端就知道前面吃的字节表示一个key,再向后吃,如果遇到26,说明从刚才吃的3D到26子节之间的是上一个key的value,以此类推就可以解析出客户端传过来的参数。
比如说“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么实际在传输过程中就会变成这样“name1=va&lu=e1”。我们的本意是就只有一个键值对,但是服务端会解析成两个键值对,这样就产生了歧义。
解决的办法就是对参数进行URL编码。URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生奇异的字符进行URL编码后结果:“name1=va%26lu%3D”,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。原文地址:http://www.cnblogs.com/jerrysion/p/5522673.html
客户端请求:http://www.xxx.com/index.php?username=a+b
服务器端,username参数接收到的内容实际为“a b”,即username=“a b”,注意中间有个空格,这是因为“+”是URL的保留字符,代表“空格”。如果想要传输正常的“+”,而不被转义为“空格”,需要对“+”进行URL编码:http://www.xxx.com/index.php?username=a%2Bb。
如果要想正确的让服务器端接收到数据中的“+”,需要在URL中对“+”进行编码,%2B。
如果要想正确的让服务器端接收到数据中的“空格”,可以在URL中直接使用“+”,或者是使用“空格”的URL编码,%20,或者直接在URL中输入空格,因为浏览器会默认将空格进行URL编码之后再发送给服务器。
提醒:如果想将特殊字符带入到数据库中执行,建议将输入得到语句全部进行URL编码之后发送。
使用方法:
两条命令
注意运行程序需要管理员权限。
测试通过:
Microsoft Windows Server 2008 R2 Enterprise