eval

Array path from variable in PHP

元气小坏坏 提交于 2020-02-16 08:22:11
问题 So I wrote a class that can parse XML documents and create SQL queries from it to update or insert new rows depending on the settings. Because the script has to work with any amount of nested blocks, the array that I'm putting all the values in has its path dynamically created much like the following example: $path = array('field1','field2'); $path = "['".implode("']['",$path)."']"; eval("\$array".$path."['value'] = 'test';"); Basically $path contains an array that shows how deep in the array

阿环的PYTHON之旅-DAY 4

若如初见. 提交于 2020-02-15 07:30:31
因为这个疫情没能回校的阿环只能在家里继续着他的PYTHON之旅… GITHUB上的那个百日PYTHON教程讲的还是有些粗略,阿环翻出了他珍藏许久(吃灰多日)的《PYTHON语言程序设计基础》接着看 基本数据类型 浮点数在PYTHON解释器中存在一个小数点后若干位的精度尾数,在浮点数进行运算时可能会影响输出结果,一般使用math函数 虽然很傻逼,但是我还是想把书里提到的一个鸡汤列出来 字符串操作 记住切片[a: b: c]的含义 python不像C语言,可以直接进行字符串连接(x+y)或者字符串复制(x*y)甚至是子串的判定(x in s) 程序的控制结构 偶然间看到了eval()函数,就顺手把相关的资料查了一下 eval()功能:将字符串当成有效的表达式进行求值并返回结果,可以实现list、dict等与str之间的转化 如字符串转换成字典 a = "{1: 'a', 2: 'b'}" print ( type ( a ) ) //<class 'str'> b = eval ( a ) print ( type ( b ) ) //<class 'dict'> print ( b ) //{1: 'a', 2: 'b'} 然后发现自己之前学的字典的内容忘得差不多了,就顺手看了一下 http://c.biancheng.net/view/2212.html -程序的异常处理 try

在Python中执行javascript

对着背影说爱祢 提交于 2020-02-14 14:35:33
在Python中执行javascript - 熊猫凶猛 - 博客园 在Python中执行javascript 在使用python抓取网页的过程中,有的时候需要执行某些简单的javascript,以获得自己需要的内容,例如执行js里面的document.write或者document.getElementById等。自己解析js代码显然有点吃力不讨好,因此最好能找到一些可以解析执行js的python库。 google之可以找到三个候选者,分别是微软的ScriptControl,v8的python移植 PyV8 ,还有SpiderMonkey的Python移植 Python-Spidermonkey 。其中ScriptControl只能在windows上运行,需要win32com库;PyV8能在windows和*nix上运行,但是需要装PyV8库;而SpiderMonkey是mozilla的js引擎在python上的移植,感觉已经不太活跃,因此没用。 微软的ScriptControl中对执行js最重要的方法就是addObject与eval,通过addObject,我们可以向js执行环境注入一个我们自定义的document对象,通过eval方法,我们可以执行一段js代码。注入自定义对象需要使用win32com.server.util.wrap方法,将一个python对象包装为COM对象

绕过waf

人盡茶涼 提交于 2020-02-12 12:21:35
WAF:有硬件和软件类型。 常见的软WAF,常见:安全狗、云锁、云盾、护卫神。 SQL注入的绕过: WAF核心机制就是正则匹配。 通过正则匹配,如果符合规则,就拦截。 比如sql注入中and 1=1被拦截。 可尝试大小写绕过:And 1=1 编码绕过: 因为WAF 获取数据后不会解码。如&=>%26 通过不同进制绕过:例如16进制的0x32相当于十进制的2。 铭记:安全和用户体验都是需要平衡的,特别是针对WAF而言。 WAF判断的几种方法: 1.SQLmap 使用SQLmap中自带的WAF识别模块可以识别出WAF的种类,但是如果所安装的WAF没有明显特征,SQLmap就只能识别出类型是Generic 在SQLmap中输入一下命令: sqlmap.py -u "http://xxx.com" --identify-waf --batch 一般情况下就可以被扫描出waf的种类。 2.手工判断 这个也比较简单,直接在相应网站的url上后面加上最基础的测试语句,比如union select 1,2,3%23,并且放在一个不存在的参数名中,若触发了WAF的防护,所以网站存在WAF. 内联注释:是MYSQL为了保持与其他数据兼容,将MYSQL中特有的语句放在/!…*/中,这些语句在不兼容的数据库中不执行,而在MYSQL自身却能识别、执行。 /*!50001*/表示数据库版本>=5.00

Redis学习笔记六:独立功能之 Lua 脚本

丶灬走出姿态 提交于 2020-02-12 09:23:30
Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令。 使用 eval 命令可以直接对输入的脚本求值: 127.0.0.1:6379> eval 'return "liushijie"' 0 "liushijie" 使用 evalsha 命令则可以根据脚本的 sha1 校验和对脚本进行求值,但是这个命令至少被 eval 命令执行过一次或被 script load 命令载入过。 创建并载入 Lua 环境 为了在 Redis 服务器中执行 Lua 脚本,Redis 在服务器内嵌了一个 Lua 环境,并对这个环境进行了一系列的修改,从而确保 Lua 环境可以满足 Redis 服务器的需要。这个过程由以下步骤组成: 创建一个基础的 Lua 环境。 载入多个函数库到 Lua 环境里。让 Lua 脚本可以使用这些函数库来进行数据操作。 创建全局表格 redis,这个表格包含了对 Redis 进行操作的函数,从而避免在脚本中引入副作用。 使用 Redis 自带的随机函数来替换 Lua 原有的带有副作用的随机函数。 创建排序辅助函数,Lua 环境使用这个辅助函数来对一部分 Redis 命令的结果进行排序,从而消除这些命令的不确定性。 创建 redis.pcall 函数的错误报告辅助函数

爬虫遇到521错误怎么办

拟墨画扇 提交于 2020-02-11 20:40:10
  本人最近用 python 开发着爬虫相关的项目,在上个月就已经把爬虫的相关代码写得差不多了,因为春节,项目停滞了十多天。最近,当我再次运行之前的爬虫项目的时候, What ?怎么不行了??本来好好的,报了 521 错误。我只是一个爬虫菜鸟,还是第一次接触到这个错误。然后我就去百度了。百度一圈后,发现这是一个 js 设置 cookie 的反爬方式。于是乎我将 521 返回的内容写到了 txt 文件里,显示出来是这样的结果。    太乱了,这样子啥也看不出来呀。后来突然想到,这就是 js 代码呀,写到 html 文件里再排版不就行了吗。这里说一下我用的编辑器是pycharm,打开了html代码后,使用快捷键'crtl+alt+l'一键排版,就好看多了。   随后,我百度到,把这一串代码的js部分复制到Console中,将eval改成console.log运行。 结果出现了这个错误,没怎么接触前端的我就傻逼了,这啥错啊。   又百度了一会才发现,原来在后面的</script>前还有一个‘}’,写上去之后,可以正常运行了。得到了这个结果。   一看,怎么这么眼熟,这就是js里面的代码呀。然后我就想,打印出了这个结果,那是不是执行过程中,js会将这两行代码替换上去再执行的呢。然后我就将两行eval替换成打印出来这两行后再去执行。突然页面就直接跳转了一下。嗯?怎么就跳转了呢?后来想到

CTF-文件上传

喜欢而已 提交于 2020-02-11 18:23:49
CTF-文件上传 写在前面: 文件上传漏洞常用于获取 webshell ,从而取得对目标网站(系统)的控制权。要获取 shell ,需要: 1.知道上传后文件所保存位置(不知道那就猜、爆破) 2.上传后文件的名字(是否被更改) 00一句话木马 <?php eval($_POST['password']);?> 一句话木马原理及不同类型: https://baike.baidu.com/item/%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC/1845646?fr=aladdin 在文章后续会根据例子提供一句话木马的变式 01 毫无过滤 直接上传即可获取 webshell 02 前端过滤 2.1绕过js过滤 例: function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 var allow_ext = ".jpg|.png|.gif"; //提取上传文件的类型 var ext_name = file.substring(file.lastIndexOf(".")

使用sh-x调试shell脚本_转

混江龙づ霸主 提交于 2020-02-11 05:12:10
参考:http://blog.chinaunix.net/uid-20564848-id-73502.html 1. 通过sh -x 脚本名 #显示脚本执行过程 2.脚本里set -x选项,轻松跟踪调试shell脚本 [以下字段转自:http://linux.chinaitlab.com/SHELL/727128_4.html] "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。 shell的执行选项除了可以在启动shell时指定外,亦可在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令,如以下脚本片段所示: set -x    #启动"-x"选项 要跟踪的程序段 set +x     #关闭"-x"选项 set命令同样可以使用上一节中介绍的调试钩子—DEBUG函数来调用,这样可以避免脚本交付使用时删除这些调试语句的麻烦

JavaScript eval() 函数

让人想犯罪 __ 提交于 2020-02-09 07:30:19
定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 语法 eval(string) 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 返回值 通过计算 string 得到的值(如果有的话)。 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。 如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。 抛出 如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。 如果非法调用 eval(),则抛出 EvalError 异常。 如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。 提示和注释 提示: 虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。 实例 例子 1 在本例中,我们将在几个字符串上运用 eval(),并看看返回的结果: <script type="text/javascript"> eval("x=10;y=20;document.write(x

js 函数讲解

这一生的挚爱 提交于 2020-02-09 07:15:32
函数 来自 《JavaScript 标准参考教程(alpha)》 ,by 阮一峰 目录 概述 函数的声明 函数的重复声明 圆括号运算符,return 语句和递归 第一等公民 函数名的提升 不能在条件语句中声明函数 函数的属性和方法 name 属性 length 属性 toString() 函数作用域 定义 函数内部的变量提升 函数本身的作用域 参数 概述 参数的省略 传递方式 同名参数 arguments 对象 函数的其他知识点 闭包 立即调用的函数表达式(IIFE) eval 命令 参考链接 函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。 概述 函数的声明 JavaScript 有三种声明函数的方法。 (1)function 命令 function 命令声明的代码区块,就是一个函数。 function 命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。 function print(s) { console.log(s); } 上面的代码命名了一个 print 函数,以后使用 print() 这种形式,就可以调用相应的代码。这叫做函数的声明(Function Declaration)。 (2)函数表达式 除了用 function 命令声明函数,还可以采用变量赋值的写法。 var print =