变量

bugku web 变量1

℡╲_俬逩灬. 提交于 2020-02-27 06:54:20
flag In the variable ! <?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET['args'])){ $args = $_GET['args']; if(!preg_match("/^\w+$/",$args)){ die("args error!"); } eval("var_dump($$args);"); } ?> 这个好像叫做php代码审计 error_reporting(0)关闭错误报告 include "flag1.php"执行flag1.php 判断是否通过get传入了参数,并且将参数赋值给$args 下一行是通过正则表达式判断$args是否全部由字母数字和下划线组成 如果是的话执行var_dump($$args); var_dump就是打印,不过会递归打印 $$args这个还是值得一说的,一般的变量只有一个$,有两个$$的变量叫做可变变量 举个例子 $a=b $b=hhh echo $$a 这时候会输出hhh 代码就分析完了,flag1.php中提示flag在变量中,现在的问题就是如何打印出所有的变量 php中有一个神奇的变量叫做$GLOBALS,它是一个数组,里面存放着所有的变量 所以只要构造?args

Python函数传参

穿精又带淫゛_ 提交于 2020-02-27 06:54:18
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。 引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。 在python中实际又是怎么样的呢? 先看一个简单的例子: from ctypes import * import os . path import sys def test ( c ) : print "test before " print id ( c ) c += 2 print "test after +" print id ( c ) return c def printIt (

BugKu 变量1

走远了吗. 提交于 2020-02-27 06:54:07
题目链接 这是一道代码审计。 flag In the variable ! <?php error_reporting(0); include "flag1.php"; highlight_file( file ); if(isset($_GET['args'])){ $args = $_GET['args']; if(!preg_match("/^\w+$/",$args)){ die("args error!"); } eval("var_dump($$args);"); } ?> 抓住两个地方,一个是正则表达式匹配,不匹配则直接die,该正则表达式应该是匹配都是字母的串。然后最关键的是最后的$$args,这是可变变量的意思,如$args的值是另一个变量的变量名。那么$$args就代表另一个变量。所以我们就给args赋值一个变量名,那么PHP的九大全局变量,一个一个试。 $_POST [用于接收post提交的数据] $_GET [用于获取url地址栏的参数数据] $_FILES [用于文件就收的处理img 最常见] $_COOKIE [用于获取与setCookie()中的name 值] $_SESSION [用于存储session的值或获取session中的值] $_REQUEST [具有get,post的功能,但比较慢] SERVER[是预定义服务器变量的一种

bugku 变量

空扰寡人 提交于 2020-02-27 06:53:34
<?php error_reporting ( 0 ); include "flag1.php" ; highlight_file ( __file__ ); if(isset( $_GET [ 'args' ])){ $args = $_GET [ 'args' ]; if(! preg_match ( "/^\w+$/" , $args )){ die( "args error!" ); } eval( "var_dump($ $args );" ); } ?> 这是这道题目,不说了,先查函数功能。破局点就在函数的漏洞中。 error——reporting(0) 参数是0禁止报错。 highlight_file(_file_): 语法 highlight_file(filename,return) 参数 描述 filename 必需。要进行高亮处理的 PHP 文件的路径。 return 可选。如果设置 true,则本函数返回高亮处理的代码。 说明 本函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。 许多服务器被配置为对带有 phps 后缀的文件进行自动高亮处理。例如,在查看 example.phps 时,将显示该文件被语法高亮显示的源代码。要启用该功能,请把下面这一行添加到 httpd.conf : AddType

ES6学习笔记(一):变量赋值和基本数据类型

两盒软妹~` 提交于 2020-02-27 04:02:44
let和const let和const不存在变量提升 变量一定要在声明后使用,否则报错。 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。 var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6 上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。 暂时性死区(temporal dead zone,简称TDZ) 只要块级作用域内存在let或const命令,则变量会被绑定在这个区域内,不受外层作用域的变量影响。凡在声明之前使用了变量,则会报错。 注意,如果使用了let或const,typeof 就不安全了 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 不允许重复声明 let a = 10; var a = 1; /

ios开发学习笔记(1)

二次信任 提交于 2020-02-27 03:06:47
objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式: self.window = [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //1.从Infor.plist中取出版本号 NString *version = [NSBundle mainBundle].infoDictionary[key]; //2.从沙盒中取出上次存储的版本号 NSString *saveVersion = [[NSUserDefaults standaryUserDefaults] objectForKey:key]; if(([version isEqualToString:saveVersion])){ //如果不是第一次使用版本 //显示状态栏 application.statusBarHidden= NO; //等待写 //self.window.rootViewController = [[*** alloc] init]; } else { //版本号不一样 第一次使用新版本 //将新版本号写入沙盒 [[NSUserDefaults standardUserDefaults] setObject

C语言学习日记DAY1

与世无争的帅哥 提交于 2020-02-27 02:39:49
C语言是面对过程的计算机编程语言,Java和C++是面对对象的编程语言。 主要编译器有:Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。 C语言程序样本 #include <stdio.h> int main() { printf(“hello bit\n”); printf(“he he\n”); return 0; } //解释: //main函数是程序的入口 //一个工程中main函数有且仅有一个 数据类型 char 字符数据类型 short 短整型数据类型 int 整型数据类型 long 长整型数据类型 float 单精度浮点数 double双精度浮点数 C语言没有字符串类型,使用的是字符数组。 使用不同的数据类型是为了方便编程和管理,节省存储空间。 变量、常量 全局变量和局部变量:作用的作用域不同,全局变量的作用域是整个程序,局部变量的作用域是当前函数和循环。 局部变量和全局变量同名时局部变量优先级更高。 变量的生命周期 变量创建到销毁的时间段 1)局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。 2)全局变量的生命周期:整个程序的生命周期。 常量 C语言中常量分为以下几种情况: 字面常量 const修饰的常变量 #define定义的标识符常量 枚举常量 枚举变量、枚举常量 enum WEEKDAY{Monday

Python_003变量&字符串

北城余情 提交于 2020-02-27 00:41:45
变量 使用前先赋值 字母、数字、下划线、变量名不能以数字开头 大小写不同 等号(=)是赋值的意思,左变量,右值 取变量名应顾名思义 字符串 '' "" \ 10 + 10 #20 '10' + '10' # '1010' str = r 'D:\工具安装\360' #'D:\\工具安装\\360' 长字符串 长字符串可以用三重引号 """""" ZhouJieLun = """ 素胚勾勒出青花笔锋浓转淡 瓶身描绘的牡丹一如你初妆 冉冉檀香透过窗心事我了然 宣纸上走笔至此搁一半 釉色渲染仕女图韵味被私藏 而你嫣然的一笑如含苞待放 你的美一缕飘散 去到我去不了的地方 天青色等烟雨 而我在等你 炊烟袅袅升起 隔江千万里 在瓶底书汉隶仿前朝的飘逸 就当我为遇见你伏笔 天青色等烟雨 而我在等你 月色被打捞起 晕开了结局 如传世的青花瓷自顾自美丽 你眼带笑意 """ 运行结果: 习题 编写程序: hello.py ,要求用户输入姓名并打印“你好,姓名!” name = input ( "请输入您的姓名:" ) print ( "你好," + name ) 2. 编写程序: calc.py 要求用户输入 1 到 100 之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑” value = input ( "请输入1到100之间的数字:" ) number = int (

【Java_01】Java 入门

浪尽此生 提交于 2020-02-27 00:31:51
一、永远的 HelloWorld! //第一个程序 public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } } 1. 第一个程序介绍 ① 注释 // 单行注释 /* 多行注释 */ /* * 文档注释 */ ② main() main()为程序的入口或者起始。 ③ System.out.println() 输出到控制台 2. 关键字 java中有50个关键字,他们都是由java定义好的,关键字全部都是小写。 关键字碰到再记忆! 3. 标识符 ① 由 $ 、_ 、英文字母、数字组成,并且以 $ 、_ 、英文字母开头(不能是关键字)。 ② 驼峰命名法 类名:首字母大写,之后每个单词首字母大写。 方法名:首字母小写,之后每个单词首字母大写。 变量名:所有字母小写。 二、常用命令 1. DOS窗口 Windows + R 进入运行窗口 输入 cmd 回车 进入 DOS 窗口 2. 编译与运行 ① 编译:javac 文件名.java (文件名与类名保持一致) 例:javac HelloWorld.java ② 运行:java 类名 例:java HelloWorld 3. 其他命令 ① 打开文件夹:cd xxx/xxx 例:cd D:

JS —— 闭包

纵饮孤独 提交于 2020-02-27 00:31:21
变量作用域 闭包的概念 闭包的用途 深入理解闭包 闭包的应用场景 Javascript的垃圾回收机制 JavaScript匿名函数详细介绍 变量作用域 两种变量作用域: 全局变量 局部变量 理解下面三段JS函数 var n = 999 ;    function f1 ( ) {     alert ( n ) ;    }    f1 ( ) ; // 999 function f1 ( ) {    var n = 999 ; } alert ( n ) ; // error function f1 ( ) {   n = 999 ; } f1 ( ) ; alert ( n ) ; // 999 返回顶层目录 闭包的概念 官方解释:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 通俗解释: JavaScript中所有的function都是一个闭包。 闭包就是能够读取其他函数内部变量的函数。 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 返回顶层目录 闭包的用途 闭包的两个用途: 一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。