四月中旬以来事情还是蛮多的,先捋一捋:
首先有幸参加了东南大学承办的SUSCTF 2nd,虽然比赛的规模不是很大,但是这也是第一次以小组的方式正式参加比赛,也是对前期学习成果的检验。在同组成员的努(带)力(飞)下,取得了前十名的成绩,混了个奖;

后来又报名了DDCTF-2019,做了做web题目,当给国赛练练手;
紧接着小组报名参加国赛预赛,周六开始周日结束,作为web手,这web题做的是真尼玛自闭啊?就做出来一个,给小组拖了后腿?,?。

SUS2nd时间确实比较久了,DDCTF目前还有复现的时间,但是并不是每道题都进行了复现,在现有能力范围之内进行题目的复现。国赛web题目环境关掉了,只能看别的师傅们写的writeup回忆了,但是有的我也看不懂?。

SUSCTF 2nd:

校官方给出的writeup:https://github.com/susers/Writeups
后面的一些题目暂时无法复现,下个月当作练习再写这部分的复现

一、MISC:真假校徽(writeup)
这道题算是MISC签到题吧,简单的运用一下stegsolve将两个图片重叠就可以看到flag(这个题用校徽来搞还是挺用心的?)

二、Web:phpstorm(writeup)
这道题提示给出了phpstorm,直接在url里输入.idea/wokspace.xml进行查看:

发现两个php文件,直接在url里添加Thi5_tru3_qu3sti0n.php,然后抓包处理,它会提示本地登录,那就直接X-Forwarded-For:127.0.0.1进行伪造,然后又提示必须用SUS浏览器浏览,直接修改User-Agent:SUS,进入出现代码:

代码审计,还是很简单的,需要POST提交一个foo,而且为了符合条件,也就是unserialize()函数,我们需要提交的payload是序列化形式。我当时直接构造的payload是:O:3:“foo”:1:{s:8:“filename”;s:57:“php://filter/read=convert.base64-encode/resource=flag.php”;},返回的base64码:

直接解码拿flag:

后来我才知道,可以直接payload:O:3:“foo”:1:{s:8:“filename”;s:8:“flag.php”;}
唔,转码有些多余了。?
三、Web:infoGate(writeup)
(这道题按照出题人的说法有漏洞,我碰巧走的就是他说的漏洞,用户名直接提交了个万能的,就进去解题了。)
首先打开页面,是个登陆窗口,底部会提示一个账号密码,试着登陆进去,什么也没发现,后台扫了一下,出现/uploads,进去后有一串unicode编码,转码后提示上传txt文件,但是我们的访客页面上并没有upload页面,这就表示需要我们需要用管理员身份登陆。当时直接试了一下万能登陆密码,直接登陆成功(这就是出题人说的这道题漏洞所在)


直接点开Upload:

上传成功后会给出上传文件路径,直接找到/Upload:

拉到底下,出现webshell.php,点击去发现flag:

后来看了一下官方的解释,这道题本意是union联合注入登陆,具体的注入过程不赘述了。应该是sqlmap可以跑出来的。

后面的几道Web题目留到后面5月份复现重解,毕竟5月份事情还是少一点的

DDCTF(前三道):

还是对自己能力范围之内的进行一下复现重解,其他的一些依靠脚本的或是思路独特的,目前还没有能力进行复现。
各大平台writeup:
https://www.ctfwp.com/articals/2019ddctf.html
http://12end.xyz/ddctf-writeup/
https://www.xmsec.cc/ddctf-2019-writeup/

一、滴(writeup):
这题脑洞不小啊,打开网页:

一张图,现在都成表情包了,我尼玛,看了一下没别的,打开burpsuite抓包看一下:我们可以发现相应的前一段编码是base64编码过的,通过解码发现,这一段编码先经过base16,再经过两次base64编码得到。既然这样的话,把index.php进行相同的操作:

把新的编码放到base64里解码:

从这段php代码里可以发现许多内容,首先给出了一个网站,这个是我们一会要访问的,紧接着在下面我们看到了刚才的编码方式,以及正则过滤,还有后面的’config’替换为’!‘这个很重要,打开他给出的网站:

可以发现日期不太对,找他的7月4日的文章:


呵呵呵,当看到评论区里的那么多祝福时我就放心了。打开.practice.txt.swp:

这时候就用到刚才说的转换了,’!‘就是’config’,于是按照套路,我们把’flagconfigddctf.php’按照方式转码,代进去:

还是base64解码:

直接代码审计,变量覆盖,文件读取。按照之前的套路,看见file_get_contents()用php://input,uid直接置空:

二、WEB签到题(复现):
这道题一开始还是比较懵逼的,授权登陆,一开始想到的是TCTF那道题,karaf ( ̄▽ ̄)",后来找到了源码,感觉代码蛮长的,没抓住重点审计没成,比赛完看了看别人的wp知道了自己问题在哪里,说实话这道题其实挺中规中矩的。

后来发现不一样,这道题还好一点。当我们打开index.php这个站点时,可以发现同时请求了其他的页面,基本上都是需要登陆的,最后在Auth.php请求里发现了didictf_username而且为空,直接修改为admin重新发送,看看可以得到什么:


想要的出来了,直接访问给出的地址,出现两段源码,找到可能跟flag有关的部分,代码审计开始:




首先由第一部分的destruct(),file_get_contents($path)我们可以知道有文件的读取,文件内容的显示;然后对于第二部分,出现get_key(),给出了提示"eancrykey and flag under the folder",路径为"…/config/key.txt"。再往下走出现unserialize()反序列化,以及后面user_data的serialize()。大体上看过来,需要我们利用反序列化构造payload,但是我们需要先拿到key。

通过观察,在"nickname"的段落里,利用sprintf可以使key出现,通过访问"app/Session.php",抓包后添加"didictf_username:admin",得到cookie,然后复制添加过去,更改为POST,提交数据"nickname=%s",得到key值:


拿到key以后,构造cookie就方便了许多。我们可以直接利用源码把代码中的路径、key值进行修改,本地直接构造序列化内容。当然对于目录,需要注意一点的是,前面还有一段对path处理的代码,用trim进行了过滤,为了绕过,我们选择用双写"…/./",这样一来,中间的"…/“被过滤,成功访问路径。从前面的分析中我们知道key和flag在同一路径下,且文件路径长度为18,而后"path=…/./config/flag.txt”。

得到flag:

三、Upload-IMG(复现):
一看见文件上传题目就头疼,之前在攻防世界里做upload题目做到自闭,虽然知道是怎么个解题流程,但还是顶不住啊。๐·°(৹˃̵﹏˂̵৹)°·๐

直接上传一张图片看看会出现什么:

提示我们上传的图片未包含字符串"phpinfo()",既然这样,在图片里加上phpinfo(),但是后来发现没什么卵用。比赛结束后看大哥们的wp,给的思路是绕过GD库,网上有直接的php脚本,直接用即可。当然也可以手工fuzz测试phpinfo()的插入位置。
1.https://github.com/BlackFan/jpg_payload
2.https://github.com/fakhrizulkifli/Defeating-PHP-GD-imagecreatefromjpeg

国赛预赛(第一道):

对于我而言,国赛就是真正的现实,狠狠地甩了我一巴掌,让我知道自己和别人到底有多少差距,自己还需要付出多少努力。这次没能进分区赛,有一部分原因是我这个web手造成的,惭愧,真的要多努力了。
题目在比完赛后就关闭Web环境了,没办法复现其他的一些题目,但是看大神们写的writeup还是能学到东西的。

writeup:
https://www.ctfwp.com/articals/2019national.html
https://xz.aliyun.com/t/4906#toc-0

Web一共四道题,除了第一个反序列化的我能搞明白点,其他三道越做越自闭,真是日了?了。

JustSoso(writeup):
这道题主要考的是反序列化和一些函数的绕过。
打开链接后:

没什么东西,view-source后提示index.php?file=xxx.php和一个hint.php。看到这个后想到文件读取,直接抓包读,先读hint.php,再读index.php:


两部分都是base64,直接解码看到两部分源码:


这道题的话,其实包含了不少的考点,有其他相似的反序列化题目的影子。

直接开始审计,先看index.php,发现unserialize(),想到unserilaize()函数的一些常考点,那么再往下,就是flag的过滤,这一块我一开始没有想到后来查了一些资料,找到可以绕过的方法。对于hint.php,有两个class,第一个Handle,我们可以看到_wakeup(),反序列化漏洞绕过无疑了,这里还有一个需要注意的一个点是"private handle",注意到这个的话,对于构造我们的payload有很大的帮助;再往下,对于Flag部分,有一个token和token_flag的相等,这里也需要注意一下。

综合一下,我们构造的payload需要绕过url的解析,然后绕过_wakeup()。对于url解析,index.php前多添加两个"//“让他解析失败,就可以绕过正则;对于_wakeup(),只需要在成员数上加1即可。结合刚才说的私有对象handle,构造的时候需要在Handle的两侧加上”%00",把源码放到本地,直接构造序列化,token的值是我自己加的。最后拿到flag:

后来看了一些别的师傅们的writeup,构造的payload,还可以是"payload=O:6:“Handle”:2:{s:14:"%00Handle%00handle";O:4:“Flag”:3:{s:4:“file”;s:8:“flag.php”;s:10:“token_flag”;R;4;s:5:“token”;N;}}"

这道题后来听说了还有非预期解,是Session文件包含,666膜大佬,?批。
非预期:http://12end.xyz/essay1/

后面的话,love_math那道题:

不难找到源码

我看这段源码愣是看了一天,因为真的不会呀,后来看了看别的师傅们的writeup,我才知道这些函数还能这么玩,读书少没办法๐·°(৹˃̵﹏˂̵৹)°·๐。但是确实也学到了一些思路。就像base_convert(),以及异或运算。

感受:

1.我个人感觉这几次比赛unserialize()的考察挺多的,对php的考察点也是越来越丰富,各种思路各种绕过方法,学习的点很多,需要慢慢积累思路,自己慢慢总结。
2.就国赛而言,各路神仙都有,真是叹为观止。不得不服,不管是天赋也好,努力也罢,入手CTF_Web也有将近5个月了,自己和别人的差距还是很大,小组没能进分区赛有很大一部分原因是我这里哑火了,所以做好这次总结,努力学习,留给自己的时间不多了。
3.听说攻防世界改版了,这几天看了一下确实改的还不错,做过的题也可以重复做,下面的话还是回到攻防世界。差不多快两个月了,当时寒假的时候就是在攻防世界里做sql和upload做到自闭的,现在再回去看看,顺便开发一下其他方面。

2019年CTF4月比赛记录(三):SUSCTF 2nd、DDCTF、国赛线上初赛部分Web题目writeup与复现相关推荐

  1. 中国高校计算机大赛网络技术挑战赛,2019年度“中国高校计算机大赛-网络技术挑战赛”国赛圆满落幕...

    2019年9月15日,2019年度"中国高校计算机大赛-网络技术挑战赛"国赛在温州大学举行,并在当晚迎来盛大的颁奖典礼,历时半年的网络技术作品类竞赛至此圆满落幕. 中国高校计算机大 ...

  2. 2019年7月训练记录(更新ing)

    前言 本月上半月训练记录可详见:2019年暑假绍兴集训. \(Jul\ 15th\) 早上到机房先做了一道一直想做的板子题:[洛谷4781][模板]拉格朗日插值,发现拉格朗日插值也并没有想象中那么难. ...

  3. 2019年11月 生活记录总结

    记录下自已每日的状态,月底统一总结: 日期 早睡(入睡-醒来/时长) 备注 2019-11-01 昨22:28入睡-今06:10醒来 - 7时42分 2019-11-02 昨23:56入睡-今06:4 ...

  4. 2019年第十二届全国大学生信息安全实践创新赛线上赛Writeup

    本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...

  5. 第十届蓝桥杯c语言b组试题,2019年第十届蓝桥杯(决赛)国赛B组C++(B)

    题目: 2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种? 注意:分解方案不考虑顺序,如2+2017=2019和2017+2=2019属于同一种方案. 思路先求出2019内的所有素 ...

  6. 2019JDATA店铺购买预测大赛复盘(冠军方案分析+比赛记录)

    19年JDATA比赛在李哥,曹哥,以及和俞兄,室友共同努力下取得不错的成绩.写这篇文章好好复盘一下比赛的经历,为感兴趣的小伙伴提供一些参考,也是对自己的一个总结.文章主要包括赛题解读,数据探索(为了保 ...

  7. 2019年11月数据库流行度排行:前三甲大幅下跌 PM 应云而升 国产续领风云

    2019年11月数据库流行度排行出炉,在积分榜单上,前 3 位的 Oracle.MySQL 和 Microsoft SQL Server 环比都出现了大幅下跌,其中 Oracle 数据库下跌 19.8 ...

  8. 三类机构舆情-2019年3月5日

    三类机构舆情-2019年3月5日@TOC 汽车金融竞争加剧精细化运营成关键 搜狐 -2019年2月27日 一汽智行国际租赁有限公司在2018年4月成立.2018年11月30日,上汽通用融资租赁有限公司 ...

  9. SiteGround 2019 年 1 月:3 折 70% off 優惠續約折扣,台灣 WordPress 推薦主機評測

    SiteGround 2019 年 1 月:3 折 70% off 優惠續約折扣,台灣 WordPress 推薦主機評測 1 SiteGround 在 2004 年 3 月 22 日正式推出營運,其總 ...

最新文章

  1. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...
  2. 用C语言解“龟兔赛跑”题
  3. 吴恩达:人工智能寒冬不会到来,但我们太乐观了
  4. setuid与capability
  5. 10.9 kill以及raise函数
  6. IIS7 经典模式和集成模式的区别分析
  7. 打印机共享无法正常打印的处理思路
  8. 彩虹屁支持java吗_IDEA版本彩虹屁插件idea-rainbow-fart,一个在你编程时疯狂称赞你的 IDEA扩展插件...
  9. apt-get出错,由于出现了太多错误,处理过程被终止
  10. 使用ActiveMQ实现简易聊天功能
  11. ( 科来网络分析系统 )简单的抓包步骤,具体的后面文章说
  12. okhttp请求使用cookie
  13. 专题二:浅谈社交行业如何有效反欺诈
  14. 【PC工具】更新微信语音转mp3保存备份方法及工具,微信语音备份方法,silk转mp3工具...
  15. 85后独立手游开发者专访:为游戏而坚持
  16. 小甲鱼31课泡菜课后作业反思
  17. word被加密不能编辑如何破解
  18. 解决JWT解析token数据时拿不到问题
  19. ffmpeg安装过程记录
  20. 二进制与十进制的换算

热门文章

  1. 升级版本-汇编码转机器码万能转换工具(支持32种CPU架构指令16/32/64位的转码)
  2. Photoshop CS5 3D
  3. 基于小波图像去噪的MATLAB实现
  4. pip使用清华源 安装opencv
  5. mysql--数据库创建及执行sql语句
  6. 不同的网段添加打印机(共享 网络)思路
  7. 【CSDN软件工程师能力认证学习精选】 什么是前端工程化?
  8. Android 录音工具AudioRecord使用
  9. 消息验证码 MAC (HMAC、CMAC) 原理、特点
  10. 前端接收二进制文件流(使用blob对象)