CTF——web安全(七)

 web安全实战:题目来源:首页 - Bugku CTF

题目一:秋名山车神

打开题目,如下所示,两秒内计算出结果,而且页面还在刷新,明显不可能。先看看源码把,源码啥也没有

刷新的时候弹出如下,可见应当是post传送个value进去,就可,难点在题目答案是多少

如何快速计算出结果并传递进去呢?只能用代码了,写代码!这里选择做python脚本,python的强大不用多说。

及如下代码,供读者参考。

import requests
import re

s = requests.Session()
r = s.get("http://114.67.175.224:11896/")
searchObj = re.search(r'(\d+[+\-*])+(\d+)', r.text)
d = {
    "value": eval(searchObj.group(0))
}
r = s.post("http://114.67.175.224:11896/", data=d)
print(r.text)
print("脚本已完成")

执行过后,只要在2s内完成,我们便可以获得flag

题目二:速度要快

打开题目,如下图所示,没什么信息,ctrl+u看源码,发现一段英文

OK ,now you have to post the margin what you find 

你需要传递一个margin参数,什么参数呢?看看数据包把(使用burpsuit)。

打开burpsuit和burpsuit绑定的浏览器,输入url,点击bp中的intercept is off进行抓包

把数据包发送到repeater模块,我们肯定要的是浏览器给我们的包,下面这个包是bp截取的我们的请求包。

把这个数据包点击send发送出去,发现响应包竟然有flag,接下来对这个编码进行操作!

等号结尾的一般是base64编码

继续解码

使用post方式传递进去发现啥也没有,只是提示让我们更快,试了几次发现,根本快不过他。

靠看了下其他大佬的,才发现又要写代码了,因为这里的编码竟然一直在变化,如下所示。

考虑用代码进行处理,这里依然选择python,如下图

代码如下,并附注释

import requests  # 导入requests库,用于发起网络请求
import base64  # 导入base64库,用于解码base64编码的数据

url = "http://114.67.175.224:18925/"  # 定义服务器的URL地址

s = requests.Session()  # 创建一个requests的会话对象,可以保持某些参数在多次请求间保持一致

head = s.get(url).headers  # 使用会话对象发起GET请求到指定URL,并获取响应的头部信息

flag = base64.b64decode(head["flag"])  # 从响应头部信息中获取"flag"字段,并对其base64解码

flag = flag.decode()  # 将解码后的字节串转换为字符串

key = base64.b64decode(flag.split(":")[1])  # 拆分字符串以":"为界,取分割后的第二部分,再次进行base64解码

payload = {"margin": key}  # 创建一个字典作为有效载荷,键为"margin",值为之前解码得到的key

print(s.post(url, data=payload).text)  # 使用会话对象发起POST请求到指定URL,附带有效载荷,并打印响应的文本内容

得到flag:

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值