2022-12-27 17:38阅读: 468评论: 0推荐: 1

[CTF] 攻防世界-ics-06

题目描述

云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。

解题过程(其实没解出来)

初看-入题

一进去就看到这个界面,属实有点懵,以为这题过于高级。
但是随便点几下都是在本页跳转,说明并不是真的复杂,这就是花里胡哨包装了界面的题而已。

啥都别说,直接打开开发者工具,看看网页源码等信息。

js那些暂且不管,因为试着点击只在本页跳转,所以直接看网页源代码如何

大致浏览一遍,发现主要就是实现导航栏界面,但是链接都是空的,除了报表中心可以实际跳转。其它就是一些无用的js。
根据题目,正是报表中心出了问题,所以直接点击跳转过去

寻找痕迹


可以看到,除了php的,其它包都是layui相关,主要和布局有关(看了很久才发现没用,甚至去到layui目录看了)
So,关键应该在那个index.php了。
这里其实有个问题,index.php无内容,而index.php?id=1有内容

先看HTML,发现并没有什么用,button就是装饰,没用对应事件。

关键-?id=

那么问题应该就是这个URL了,我请求index.php为什么会返回index.php?id=1呢?
于是我试着修改id=2,它返回了同样的内容。

这里就是经验的问题了:
像这种,其他地方没有有价值的东西,而这个URL的id可变,类似page,返回的内容还相同
那么就可以尝试爆破,从1到10000进行访问,比较响应长度的不同,一般长度不同的那个就是有flag的,或者请求的同时直接判断是否含义flag字符串。

用Python requests爆破

大佬都用burpsuite,本人不会,且尝试之后可能操作不当进度很慢,于是用Python那爆破。

copy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
import requests url = 'http://61.147.171.105:51047/index.php?id=' length = len(requests.get(url+'1').content) # 初始值,正常看到的网页 for i in range(1,10000): res = requests.get(url=url+str(i)) r = len(res.content) print(f'\r{i}', end='') if r != length: # 长度不一样就代表暴力找到了,输出 print('\n'+url+str(i)) print(res.text) break

这里通过len(res.content)来判断响应长度。

总结

  • 诸如数字可变的URL,可以考虑采用爆破的方式
  • Python响应长度:
    len(response.content) 或者 用头文件中的Content-Lengthresponse.headers.get("Content-Length")

本文作者:faf4r

本文链接:https://www.cnblogs.com/faf4r/p/17008474.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   faf4r  阅读(468)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起