python 的eval

2019-04-19  本文已影响0人  萍水间人

DDCT的一道flask题?

刚开始还傻乎乎的觉得是不是传入 func:show_flag;就会被执行

我们从入口点开始看起, 看看从我们传入URL的参数开始, 是怎么到这个函数的

这里加入了一个判断, 也就是说querystring必须是非空, 长度小于等于100, 且必须以action:开头的

所以如果是直接构造 func:show_flag是不可能地

之后调用了 trigger_event这个函数

这个函数会将querystring添加到 event_queue

这里对querystring进行了类型判断, 从URL中传入的都是str类型, 而代码内部的调用传入的都是 list类型(其实也不能这么说,。。

比如这几处地方

如果要执行eval函数

  1. 必须在request.event_queue中, 也就是在这之前必须调用trigger_event函数
  2. event必须以action或者func开头
  3. 必须是合法的字符

所以要如何达到任意函数执行的目的呢?

先想办法调用trigger_event函数再说

查了一下网上关于eval的例子。
大部分都是通过eval对用户的输入过滤不严导致的

# 注释符要怎么用呢。


还是不太明白如何调用的。

上一篇 下一篇

猜你喜欢

热点阅读