首先,这个kid没有做什么防御SQL注入的手段,所以思路可以是SQL注入
然后,这个查询的结果会作为签名算法的秘钥来对header和payload进行加密
最后,通过改变查询的结果,改变秘钥,再把秘钥的值保持一致就好啦,具体的展示如下
改变kid的值,让查询的结果为1
升级,升级,升级重要的事情说三遍
webgoat解释了跨站请求伪造
一般会出现在写操作更有价值,不过读操作也可以用,这里面充满著钓鱼、社工
让你通过跨站去执行提交查询这个操作,然后返回的flag就是答案
直接点击提交查询,就不会给你正常的结果
在这里我用的是BP自带的CSRF检测工具
可以参考本文章DVWA中的具体操作
我看旁边有个webwolf的标志,貌似也能从webwolf上执行,或者自己写个站点,是访问这个接口,都行
让别人进行留言,这道题目原意是让你写一个攻击页面,然后其他用户访问这个页面后,就会在留言板留言一条,但是这在程序判断上不好实现,所以此题目是判断你提交留言的包里host值和referer值是否一样,不一样则通过。
自己提交评论还不让提交了,只有一只猫在盯着你
那就继续用BP的CSRF Poc,要把标志位改成true哦
CSRF的 防御,我就当个工具人,把百度翻译贴过来
大多数框架现在都默认支持防止CSRF。例如,对于Angular,拦截器默认从cookie读取令牌XSRF-token并将其设置为HTTP头X-XSRF-token。由于只有在域上运行的代码才能读取cookie,所以后端可以确定HTTP请求来自客户端应用程序,而不是攻击者
为了使其正常工作,后端服务器在cookie中设置令牌。不应将此cookie的值标记为只读取此cookie的值。每次向服务器发出请求时,Angular都会将令牌作为HTTP头放入X-XSRF-token中。服务器可以验证这两个令牌是否匹配,这将确保服务器请求在同一个域上运行。
要点:定义一个单独的COOKIE,不要重用会话COOKIE
请记住,会话cookie应始终使用http only标志进行定义。
另一种防御方法是为每个调用添加一个自定义请求头。如果与服务器的所有交互都是用JavaScript执行的,这就可以了。在服务器端,您只需要检查这个头是否存在,如果这个头不存在,就拒绝请求。有些框架在默认情况下提供了这种实现,但是研究人员alexinfuhr发现这也可以绕过。你可以阅读:Adobe Reader PDF-客户端请求注入
貌似,改这个字段是有效的方法
上传到webwolf上(相当于开了个站点)
试了半天,不是很会用,算了不打脸了,我祭出eclipse,制造一个钓鱼链接
还用刚刚的代码,发布一个站点
添加项目,开启tomcat
可以看到二进制的信息头
和zip刚好吻合,说明这是个zip文件
解压成文件夹后,用git bash打开
我都放一个文件夹里了,有点乱,但是,执行命令后都重新出现了
答案在哪里,相信各位都已经清楚了吧
在百度上搜索关键词“jd-gui”,点击进入jd-gui的官方网站。
下载好,不能安装,双击exe就可以用,然后把刚刚那个文件拖进来
这里看网上大神的分析吧
其实看源码,能发现,生成link时使用了random.setSeed(),而这个就直接导致了本题的漏洞,设置了种子过后生成的就是伪随机数,就是说同一个种子每次生成的随机数是固定的
这个类是带主函数的,我们可以直接拷贝到eclipse中,运行一下,不就好了
但是过程貌似是依赖MD5,所以要把MD5一起带走
悄悄告诉你,我是手动复制粘贴的
填的参数是admin和webgoat,因为参数之间要用空格,所以最后写的是
其实webgoat主要是指定有多少位,所以填xxxxxxx也一样的答案
把这个link复制出来
看了一下,大神的教程,和我们passwordresetlink哪个class文件的源码不太一样,人家是有1个参数的,我这个有俩参数
使用2版本的,还是带着参数运行,不过这里只有一个参数,就带着admin就好
运行完之后,还是有问题
但是我得到了一个关键信息,这个人的var2是:!!keykeykey!!
!!keykeykey!!有13位,很有可能我们在生成的时候,没有考虑那么多位,所以我们再次运行,运行一个的class或第二个class都行,因为这俩类其实没差多少,那么我这里运行第一个吧
让我投票,我点了,你还让我登录,不都是匿名投票的吗