CTF初体验:web19,速度要快。

解题过程

进来
在这里插入图片描述
什么都没有,只有一句话和一段英文
在这里插入图片描述

不管怎么样,(1)先扫下后台,(2)先看看刚进来时的request和response**

不管怎么样,(1)先扫下后台,(2)先看看刚进来时的request和response**

(1)扫描到一个 index.php ,进去发现跟之前的没什么不同。
(2)发现刚进来 response里就有flag,然后刷新一下看看他是固定的还是变化的,发现flag是变化的
在这里插入图片描述
在这里插入图片描述

flag是变化的,把每次都flag都去试下,发现都不对。

又因为这是个base64编码的串,所以随便找一次的flag,先解码看下。
在这里插入图片描述
然后再去试下答案,发现还是不对。而且每次进入刷新网页,flag都不同,那么解码出来的那个串也不一样了。也要注意,解码出来还是个base64编码的串,说以该再解码

所以,没这么简单, 到现在为止网页的提示还没用。
(1)“我感觉你得快点”
(2) post the margin what you find

尝试1

margin? 难道是css元素?看了下,找个唯一一个margin,为8
在这里插入图片描述
所以又post了两个请求:参数分别是margin:8 , margin:8px ,发现结果跟上边,没这个参数的时候得到的结果是一样的。response里还是flag,解码不解码,去试着提交,都不对。

尝试2:flag是不断变化的,再联系联系“我感觉你得快点”这句话,所以我们得用脚本完成请求以及后续操作了。这样可以在flag还没更新的那段时间内,利用flag找到答案。

既然是要post ,参数为margin

所以我们试着用脚本实现下:

随便post一个请求,得到flag。 然后再post一次,这次带上参数margin,然后试下值为flag的情况。

flag为base64编码,解码一次以后,得到的串发现还是base64编码,再解码发现是数字。
所以把两种情况都试了下,最后发现数字的情况合适。
其实就是应该数字,因为参数为margin,margin本来就该是一个数值。而flag两次解码以后就是数字,所以十有八九就是两次解码后的结果了。

import requests
import  base64


payload =  { 'Cookie' : 'PHPSESSID=cltuu48l76egftke0b725e8560'}
url = "http://114.67.246.176:16271/"
ret = requests.get( url , params = payload)
flag = ret.headers['flag']  #  base64
flag = base64.b64decode(flag)    # binary
print(flag)
flag = flag[-9:]
print(flag)
flag = base64.b64decode(flag)
print(flag)
res = requests.post(url,{'margin':flag})
print(res.text)

结果让人欣喜,虽然还没找到答案,但有了返回结果有了变化。在这里插入图片描述

看下结果,让我们速度更快点,说明两次请求之间的间隔还是比较大。第二次请求的时候,flag已经变了。
观察了下我的代码,发现没有用session, 所以速度会慢。(保持会话的话,可以保持TCP,一次建立,多次交互,交互完了再关闭TCP连接,如果不保持的话,每次都要建立和关闭TCP连接,会慢)
(所以以后,尽量用request.session吧)
所以尝试修改下代码:

import requests
import  base64

s = requests.session()
payload =  { 'Cookie' : 'PHPSESSID=cltuu48l76egftke0b725e8560'}
url = "http://114.67.246.176:16271/"
ret = s.get( url , params = payload)
flag = ret.headers['flag']  #  base64
flag = base64.b64decode(flag)    # binary
print(flag)
flag = flag[-9:]
print(flag)
flag = base64.b64decode(flag)
print(flag)
res = s.post(url,{'margin':flag})
print(res.text)

得到结果:
在这里插入图片描述

终于得到解了。

刚玩CTF,web解题的思考和尝试过程挺有意思的。

总结:

(1)每次做题前习惯性的扫下后台,反正也花不了多少时间
(2) 仔细看html源代码,思考提示。
(3)仔细查看request和response
(4) 要对各种编码敏感(哈哈,又有新的学习内容了)
(5)这种得到的信息不断变化的情况(例如本题中给的flag),要考虑后续用脚本操作了。

找时间复习下计网,复习下http交互在osi模型下的全过程。
说到session,又有的学了:token,session,数字签名,证书等等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值