一个随机禁言引起的算法问题

起因

小小功能里面最火爆的竟然是禁言套餐,群友疯狂索要禁言套餐,玩起了赌博

问题来了,现在的时间是9点,如果老罗每当禁言解禁就去申请,问老罗在十二点之前学习的概率。

题目总结一下:

给定三个正整数a,b,c, 当禁言时间大于a时,老罗立刻去学习。b为随即禁言的范围,每次申请禁言,随机范围为[1,b],取值为整数c为距离十二点的时间。现求老罗在十二点之前能去学习的概率。

个人思路

目测是动态规划,因为时间取值是正整数,这就自然的构成了不同的状态(不过如果取值不是整数的话,那就太难算了)。还有一个假设,每一次请求的随机数完全随机,每次请求独立,构成n重伯努利实验。根据这两个假设,写了一个递推式。

这里写错了,应该是从i+10开始到i+100,不过思路一样,debug时候改过去了。懒得改了。

1
2
3
4
5
6
7
8
9
10
11
study_time,top_time,rest_time = 10,100,180
# 小于等于10分钟则学习,禁言封顶100,还剩180分钟到12点。
dp = [0 for i in range(rest_time)]
dp[-10:] = [1-study_time/top_time]*10
for i in range(rest_time-10-1,-1,-1):
if(180<i+100):
dp[i] += (i+100-180-1)/100#超界,不学习的概率是1,加权加上去
for j in range(i+10,min(i+101,180),1):
dp[i] += 0.01*dp[j]
print(dp)
print("学习概率",1-dp[0])

python代码写了些,算出来结果是33.1%

智慧的群友1

宗濂61某个万能的医生用了个牛逼方法,random来模拟,并且模拟了很多次,一看就是老统计学派概率论了

1
2
3
4
5
6
7
8
9
10
11
12
13
import random

for raw_tl in range(180, 10, -1):
sp = 0
for i in range(1000000):
tl = raw_tl
while tl >= 0:
ct = random.randint(1, 100)
tl = tl-ct
if ct<10 and tl>0:
sp += 1
break
print('%s %s:%s %s' % (raw_tl, sp, 1000000-sp, sp/10000))

智慧的群友2

能动A某大佬直接就上数学了,概率估算,扔掉后面的余项。

算出也是29%左右

总结

群友的方法算出来都是29%左右,我那个递推算出来是33%,差距挺大,不过我找不出问题,希望朱军可以指导我一下,实在是debug不来了。

两个一般性矩阵互相相似的条件

在复习的时候突然遇到一个问题,两个普通矩阵怎么判定相似

之前遇到的题目里面都是使用相似对角化的方法,这里就不在仔细介绍,总结就是如果当前矩阵的每一个特征值的几何重数和代数重数均相等,则可以相似于一个对角阵,如果两个矩阵相似于同一个对角阵,则这两个矩阵相似。

$$
A \sim \Lambda \sim B
$$

这样就要求A和B拥有同样的特征值,并且每一个特征值的几何重数等于代数重数,并且两矩阵对应特征值的几何重数也要相等。

这样先然不是最简的条件,经过网上查询,发现两个矩阵相似不一定同时相似于一个对角阵,任意的矩阵都可以通过可逆变化变为约当标准型,Jordan Matrix。

约当标准型是最简的解耦矩阵,对角阵可以理解为一种特殊的约当矩阵,即每一个约当块的大小为1。

所以两矩阵相似的条件就变为了同时相似与一个约当矩阵了,而约当矩阵就要求约当快对应相等

$$
A \sim J \sim B
$$

所以我觉得最后的结论是,两矩阵相似的充要条件是两矩阵AB拥有同样的特征值,并且两矩阵每个特征值的几何重数和代数重数对应相等(几何重数不必等于代数重数),两矩阵即可相似。

(这个hexo的markdown编辑器居然不能解析latex公式,emm)

一道ctfweb题目

这道题目是模仿其他人的思路做的,相当于复现吧。

就一个登陆界面。目录也没扫出来。无源码泄露。
burp抓个包试试注入
输入单引号 返回请停止输入危险字符/单词!
用双引号试了下。没反应。应该就是单引号的注入

猜测后台语句为

select token from user where username='' and password=''

sql with group语句绕过审核密保问题

打开进去发现有数据备份的功能,所以猜测可能存在mysql任意读取漏洞

然后发现有写马的功能,尝试抓包分析

抓取通信发现有两次通信,其中一次是json.php。后台的代码可能是

scandir($_GET['page'].'/webshell/')

这里参考答案使用php版本低的问题进行%00截断和目录穿越绕过,读取到根目录的信息,里面就有flag和入群的口令了。

最后用mysql任意读取读取到flag

心情:今天无意间发现当年跟我一起刷buu的哥们已经进WM战队了,哎,可惜我没坚持下来啊,8说了,考研完了一定捡回来ctf这个爱好。

参考:过客 . 某群入群题2[EB/OL].https://guokeya.github.io/post/Y59x961oO/

西安交大本科生健康平台存储xss漏洞

起因

起因是想要写一个自动填写这个健康平台的脚本,每天被导员催着实在是不爽。无意间打开了个人纪录查看的界面。

可以看出来这里存在明显的注入。于是拿出了尘封已久的burp。

第一次利用

最明显的思路是利用div标签的属性,闭合前一个的双引号,然后在后面加上onclick或者onmouseenter的事件属性。

直接开始抓包,整个的通信结构其实并不复杂,开启应用时请求json形式表格,然后点鸡确认时候请求一个flowkey作为单次通信标志(其实没有时间限制,经过测试)。

确认后点鸡提交,提交时直接发送全部表格的json形式文件,这里有一个技巧是搜索手机号,在整个数据包中只发现了唯一的手机号,于是可以断定该处的上下文部分就是提交的表格数据(其余的部分可能是验证信息)

这个是明显的数据结构。要利用就要闭合双引号,想闭合引号还不简单

" onclick=alert('果果最帅')//

直接开整,然后暴毙,因为json数据包中解析了引号,所以这个不是人家后端的问题,是在数据包的构造上就出了问题。

于是现在问题集中在了,怎样不使用引号来闭合前一个引号。

首先想到的是HTMLEncode,测试后直接暴毙,插进去的没有问题,但是不解析。具体的效果截图没有了,导员发现我在搞事情后直接给我把我之前插的代码全弄没了。后来搜一下发现HTML编码是用来防止xss的。除了编码,还有一个思路就是。。

第二次利用

除了闭合双引号,还有一个方法就是闭合尖括号。思路的来源是,除了div的tittle标签里面插入了可执行代码之外,地下的文字也加入了,所以不如直接暴力把div标签闭合掉。

这次测试的主要难点是每天只能提交一次,之前好多看起来有效的payload都失效了,很离谱,最离谱的是<script>标签不执行,保存下来本地点开才能执行,可能他们前端有一些安全策略吧,超纲了。

这里直接省略中间做过的一万次测试,包括插入哔哩哔哩播放器和其他乱起八糟的东西,后来发现是不能有双引号,哔哩哔哩播放器那里主要是出现了冒号,之后的任务是思考如何绕过这个冒号。。。。。。。

最后测试的payload是

//></div><img src='http://ggalaxy.top/file/mm.php'  onclick='alert(`果果最帅`)'><div>

还有可以做的地方

可以注入一些更可恶的代码,现在的问题是冒号没有办法绕过了,style属性就不大行。之后再说吧。

希望早点开学吧,在家里快闲出病了。

参考:moxiaoxi . XSS测试备忘录[EB/OL].https://momomoxiaoxi.com/2017/10/10/XSS/

  • Copyrights © 2015-2024 galaxy
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信