url_for()函数(flask)
1.url_for()作用:
(1)给指定的函数构造 URL。
(2)访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
{{url_for.globals.[‘current.app’].config}}
get_flashed_messages函数
get_flashed_messages方法取出(闪现信息只能取出一次,取出后闪现信息会被清空)
{{get_flashed_messages.globals.[‘current.app’].config}}
SQlite建表包注入
table_name和columns参数存在SQL注入,但是我们不知道flag的表名和列名。每个sqlite都有一个自动创建的库sqlite_master,里面保存了所有表名以及创建表时的create语句。我们可以从中获取到flag的表名和字段名。另一个知识点,在创建表时可以用as来复制另一个表中的数据。这里我们就可以用as select sql from sqlite_master来复制sqlite_master的sql字段。另一个问题,这里拼接的这一串字符是在as后面的,会影响后面的sql正常执行
因为后面的$column也可控,所以这里可以用as "…"来把这一段干扰字符闭合到查询的别名里。双引号被过滤了,在sqlite中可以用中括号[]来代替。
table_name=aaa as select sql as[&columns[0][name]=]from sqlite_master;&columns[0][type]=2
函数Is_Valid()
功能:检查对象变量是否已经实例化,即实例变量的值是否是个有效的对象句柄。
语法:IsValid(objectname)
参数:objectname:要检查的对象名。
返回值:Boolean。如果指定对象已经创建了对此案实例,那么IsValid()函数返回True,否则返回FALSE。如果参数obejctname的值为NULL,IsValid()函数返回NULL。
substring函数
截取字符串
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(s.substring(0, 2));
System.out.println(s.substring(2));
sc.close();
}
}
如果输入的为0123456
则输出:01
23456
mid函数
Mid是Visual Basic和Microsoft Excel中的一个字符串函数,作用是从一个字符串中截取出指定数量的字符。
语法
VB:
Mid(String As Variant, Start As Long, [Length As Variant]) As Variant
Mid$(String As String, Start As Long, [Length As Variant]) As String
Excel:
MID(text, start_num, num_chars)
VB6.0中
DimvAsString
v=Mid("VisualBasic",0,12)'提示实时错误5
v=Mid("VisualBasic",1,6)'v的值为"Visual"
v=Mid("VisualBasic",1,20)'v的值为"VisualBasic"
v=Mid("VisualBasic",8)'v的值为"asic"
v=Mid("VisualBasic",15)'v的值为空字符串
v=Mid("中文VB",2,2)'v的值为"文V"
v=Mid("1&1&",2,3)'v的值为"&1&"
JavaScript RegExp
定义:n$ 量词匹配任何结尾为 n 的字符串。
语法:new RegExp("n$")
直接量语法:/n$/
对字符串结尾的 "is" 进行全局搜索:
var str="Is this his";
var patt1=/is$/g;//搜索到的是his的is
超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
无参数函数RCE
超级全局变量$_ENV
$_ENV数组中的内容是在php解析器运行时,从php所在服务器中的环境变量转变为php全局变量的,可以认为它就是一个环境变量的集合
getenv()函数
getenv(name)所以我们可以利用这个函数获取一个名为name环境变量的值。如果该环境变量不存在,则返回 NULL。
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf("PATH : %s\n", getenv("PATH"));
printf("HOME : %s\n", getenv("HOME"));
printf("ROOT : %s\n", getenv("ROOT"));
return(0);
}
PATH : /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
HOME : /
ROOT : (null)
array_rand()函数
array_rand() 函数返回数组中的一个随机键名,或者如果指定函数返回键名不只一个,则返回一个包含随机键名的数组。
语法:array_rand(array,number)
参数 描述
array 必需。规定数组。
number 可选。规定返回多少个随机的元素。
<?php
$a = array('a', "v", 's', 'b', 't');
var_dump(array_rand($a));
?>
sandbox> exited with status 0
int(2)
这样就可以取出一个单元,但是这里返回的是键,而不是值。如果想要得到值,就可以用一个函数先处理一下。这就是下面要说的这个函数了。
array_flip()函数
这个函数的作用是交换数组中的键和值,这样原来的键就变成值了,而原来的值就变成键了。
<?php
$a = array('a', "v", 's', 'b', 't');
var_dump(array_flip($a));
?>
运行结果:
array(5) {
["a"]=>
int(0)
["v"]=>
int(1)
["s"]=>
int(2)
["b"]=>
int(3)
["t"]=>
int(4)
}
sandbox> exited with status 0
<?php
$a = array('a', "v", 's', 'b', 't');
for ($i=1; $i<10; $i++){
var_dump(array_rand(array_flip($a)));
}
?>
结果:
string(1) "v"
string(1) "s"
string(1) "v"
string(1) "b"
string(1) "a"
string(1) "s"
string(1) "v"
string(1) "s"
string(1) "t"
current() 函数
定义:current() 函数返回数组中的当前元素的值。
每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
语法:current(array)
end() - 将内部指针指向数组中的最后一个元素,并输出。
next() - 将内部指针指向数组中的下一个元素,并输出。
prev() - 将内部指针指向数组中的上一个元素,并输出。
reset() - 将内部指针指向数组中的第一个元素,并输出。
each() - 返回当前元素的键名和键值,并将内部指针向前移动。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) ; // Peter
echo "\n";
echo next($people) ;//Joe
echo "\n";
echo current($people);//Joe
echo "\n";
echo prev($people);//Peter
echo"\n";
echo end($people);//Cleveland
echo "\n";
echo prev($people);//Glenn
echo "\n";
echo current($people);//Glenn
echo "\n";
echo reset($people);//Peter
echo "\n";
echo next($people);//Joe
?>
运行结果
Peter
Joe
Joe
Peter
Cleveland
Glenn
Glenn
Peter
Joe
sandbox> exited with status 0
localeconv()函数
这个函数也会经常被用到,因为这个函数会返回一些字符组成的数组,通过使用localeconv()和current()等数组操作函数结合,就可以做到读出某个字符。
<?php echo current(localeconv());?>
运行结果: “ . ”