最近呢, 也是基础漏洞学的差不多了, 就在edusrc上面实战, 刚开始搞一些信息泄漏啥的, 提交了十几个, 结果就他娘的通过了一个. 咱也就不碰信息泄漏了, 没得意思.
关于这个学校测试时也是有坑的, 刚开始找到的统一平台地址登录过之后是废弃的, 我当时就以为这后台是不是不用了, 然后过了一两个小时, 我在做资产搜集的时候, 又发现了一个一样的登录点, 但是目录不一样了, 才发现这狗日的数据是通用的, 但是修改后跳转的登录页面确实假的.
第一个漏洞: 修改密码判断不严谨.
这个就是常说的逻辑漏洞, 修改用户密码. 功能点是在首页的忘记密码处,
这个漏洞利用还是有条件的, 需要学号+绑定的邮箱. 因为我是有个朋友在这个学校上学, 我就通过: site: xxx.edu.cn "我朋友的名字"找他了他的学号. 在通过他的QQ确定了邮箱. 当然了, 这个过程我是没有联系他的啊.
利用方式也很简单, 选择验证方式-> 确认账户, 确认账户的时候就把学号+绑定的邮箱输入进去就行了, 进入到认证的时候, 发送验证码的时候抓包吧收件邮箱改成自己的就可以了.

在输入完验证码点击下一步的时候又进行了一次邮箱的修改, 这个时候后台判断的应该是发送得邮箱+验证码, 所以还是要把自己的邮箱写上去.

后面就不需要在修改了, 正常输入新密码就可以了, 修改完成以后就是之前说的, 跳转到了废弃的那个登录页, 他妈的. 以后长记性了
第二个漏洞: 前端给的权限太大. 修改返回包. 这个就是任意密码修改了, 想改谁就改谁.
算是第一个漏洞的延伸吧, 我在之前的基础上又测了一下, 测试了一下登录成功的返回包和失败的返回包, 看一下吧
登录成功的返回包

登录失败的返回包

我是想做直接越权登录的, 但是这个里有一个loginId无法绕过去, 因此无法正常显示登录成功的内容. 但是这里发现了一个叫isFirstLogin的值, 在他的登录页又看到了第一次登录会强制修改密码, 这里返回的false, 也就是说不是第一次, 那要是改成true呢?
{
"isBindPhoneFlag":true,
"loginId":"0d288066c83211eb9f2c55dbec8ac3d2",
"isFirstLogin":false,
"phone":"************", 手动打码
"success":true,
"username":"21914101016"
}

这里我是借鉴登录成功的那个包, 内容都是乱写的, 主要是在isfirstlogin, 成功跳转到首页密码修改.


这里就算是结束了, 前面说的这玩意给的权限太大了, 你说你把修改密码这个大的权限放在前端干嘛, 其实这里完全还可以再次扩大, 很明显, 修改密码是有一个接口的, 而这个接口没有做任何判断, 因此, 在修改密码提交的时候, 还可以抓个包

这里尝试一下随便修改学号, 也是可以修改成功的, 这种接口没有丝毫的判断, 不知道该怎么去形容了.

总结一点: 细心细心, 还是他妈的细心. 什么点都测一下, 返回包的内容都看一下, 可控的参数, 返回包感觉有问题的参数. 都改改试试看, 总会有意想不到的收获.
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir