Writeup
未读XYCTF WP WEB第一周也是ak了web
队伍ak了re 目前排名第7 9639分 32解题 比隔壁高1名
ezPOP<?phperror_reporting(0);highlight_file(__FILE__);class AAA{ public $s; public $a; public function __toString() { echo "you get 2 A <br>"; $p = $this->a; return $this->s->$p; }}class BBB{ public $c; public $d; public function __get($name) { echo "you get 2 B <br>"; $a=$_POST['a']; $b= ...
Writeup
未读NKCTF WP WEB结果比赛结束 排名:48
也算是造神成功吧
我们队:
还是可以
爆了1道web 2道misc 1道re 1道pwn
我会做的就3道 现在先复现一下web方向的题吧
my first cmscms弱密码爆破+命令执行
这道是唯一写出来的web题
进来时一些页面 有新闻 下载等
其实在最开始发现在url上有一些东西
page可以通过数字改变来改变页面状态
然后尝试sql注入 无果
然后在首页发现登录连接
click here to login
点击后有登录页面
cms的弱密码爆破
先猜user name 是admin
抓包:
发给intruder
标爆破目标
传字典
开始用了一个5000的字典没爆破出来
找到302重定向
所以密码就是Admin123
登录 进入后台
有文件上传系统
可以通过写马进行后门连接
可以直接命令执行
要run两次可以执行一次命令
发现flag文件
直接cat
全世界最简单的CTF
进来后只有一个这个界面
只能执行js代码
dirsearch扫一下
发现泄露 secret
访问
const express ...
Writeup
未读NEW STAR WEBweek 2游戏高手
很明显不可能直接手打100000分
第一次碰到游戏题完全不会做 想了一会 直接give up
查看wp 复现如下:
前端题 改javascript代码
f12后在样式编辑器中可以找到js文件 发现游戏结束代码 346
这段代码的意思是:当分数高于100000时,向api.php发送post请求,弹窗你的分数并返回一个消息
所以我们需要改javascript的变量值,将gameScore赋值大于100000
方法:
在我们需要修改的变量赋值语句之后,下断点(点击语句左侧的序号就能下断点),之后刷新页面(F5),重新载入页面
换到 “控制台” 标签页,设置要修改的变量的值,达到覆盖原值的目的,语句格式 “变量名=值”,gameScore=999999
上传后发现分数已经超了,自杀后,切回 “调试器” 标签页,变量值已被修改
出flag
include 0。0 <?phphighlight_file(__FILE__);// FLAG in the flag.php$file = $_GET ...
反弹shell前置什么是反弹shell:反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。
正向连接:假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。
什么情况下需要用到反弹shell:大致有如下几种情况:
由于防火墙等限制,对方机器只能发送请求,不能接收请求。拿到了目标机器的远程执行命令权限,为操作方便想要在本机拿到 shell 。目标机位于局域网,直接连接不了。目标机器的ip动态改变,你不能持续控制。对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,才是上策
对于以上几种情况,我们是无法利用正向连接的,要用反向连接。
反弹 shell 的方式有很多,那具体要用哪种方式还需要根据目标主机的环境来确定,比如目标主机上如果安装有 netcat,那我们就 ...
Hash长度拓展攻击介绍MD5是一种广泛使用的哈希函数,它产生一个128位(16字节)的哈希值。通常呈现为一个32字符的十六进制数。它是一种单项函数,这意味着从MD5哈希值是不可能(在实践中)直接得到原始数据的。换句话说,MD5不是加密过程;它是一个单向散列函数,没有一个反向的过程能够从散列值中恢复出准确的原始输入。
哈希长度扩展攻击(也称为哈希长度扩充攻击或者Hash Extension Attack)是一种针对使用Merkle-Damgard构造的哈希函数(如MD5, SHA-1, SHA-256)的加密攻击。Merkle-Damgard构造是一种创建哈希函数的方法,其典型结构包括一个基本的压缩函数和一个填充方案,确保输入数据的长度是特定倍数。
哈希长度扩展攻击的原理基于以下几点:
可预见的填充: Merkle-Damgård实现使用一个预定义的方式来填充消息,以确保信息长度符合要求。通常填充以一个bit的’1’开始,然后是一串’0’,最后是一个表示原始消息长度的64位(对于MD5和SHA-1)或128位(对于某些SHA-2函数)的二进制数。攻击者知道这个填充方案。
状态保持 ...
frp内网穿透前置学习中经常用到kali,但是公网服务器并没有安装kali镜像,本地只安装了kali虚拟机,而msf渗透时常常需要反弹shell到kali中,但内网中的kali并没有公网IP地址,因而可以通过frp工具将内网中的服务映射到公网IP地址的端口中
frp 是一个高性能的反向代理应用,采用C/S架构(客户端/服务端),通过简单的配置能够将客户端中的tcp, udp, http, https 等协议隐射到服务端相应端口上,通过访问服务端对应的端口即能够访问到客户端对应的服务。frp实现效果大致如下,通过访问公网服务器的某个端口即可访问到内网服务器中的某个服务
为了完成frp内外穿透,你需要准备好如下资源/工具
公网服务器,这里我用的是CentOS7.6
frp服务端/客户端工具,github下载
内网服务器或本机,这里我用的是kali2020虚拟机
开始配置服务端将frp文件上传到公网服务器 我这里是使用的Winscp
我这里上传的是gz压缩文件
直接解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz ...
docker介绍介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。
小知识:沙盒也叫沙箱(sandbox)。在计算机领域指一种虚拟技术,而且多用于计算机安全技术。安全软件可以让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。
Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。
Docker容器技术与虚拟机的区别docker和容器技术和虚拟机技术,都是虚拟化技术。
docker有着比虚拟机更少的抽象层。 由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。所以docker效率比虚拟机效率高。达到了秒级启动的地步。
docker相较 ...
burpfakeIP介绍burpfakeIP是BurpSuite的一个插件
可以用于伪造ip
下载地址
安装下载并解压到本地
打开BP 安装
添加
下一个
安装成功
使用伪造指定ip
右击抓到的数据包,选择fakeip,inputIP,输入想要用的ip地址,点击确定,自动添加
伪造本地ip
右击数据包选择127.0.0.1(如上图),自动生成如下数据包
GET / HTTP/1.1 Host: 192.168.1.135:8002 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: ASPSESSIONIDAACSRSQS=CJLF ...
USB流量分析USB流量指的是USB设备接口的流量,攻击者能够通过监听usb接口流量获取键盘敲击键、鼠标移动与点击、存储设备的铭文传输通信、USB无线网卡网络传输内容等等。在CTF中,USB流量分析主要以键盘和鼠标流量为主。
鼠标流量基础知识USB协议鼠标数据部分在Leftover Capture Data域中,数据长度为四个字节
第一个字节,代表按键
当取0×00时,代表没有按键当取0×01时,代表按左键当取0×02时,代表当前按键为右键
第二个字节,可看作为signed byte类型,其最高位为符号位,
当值为正时,代表鼠标右移像素位;值为负时,代表鼠标左移像素位。
第三个字节,代表垂直上下移动的偏移。
当值为正时,代表鼠标上移像素位;值为负时,代表鼠标下移像素位。
如图,数据信息为0x00002000,表示鼠标垂直向上移动20
flag隐藏在usb流量中,通过USB协议数据中的鼠标移动轨迹转换成flag
#!/usr/bin/env python# coding:utf-8import argparseimport structfrom enum import E ...
pickle反序列化前置什么是Picklepickle是Python中一个能够序列化和反序列化对象的模块。和其他语言类似,Python也提供了序列化和反序列化这一功能,其中一个实现模块就是pickle。在Python中,“Pickling” 是将 Python 对象及其所拥有的层次结构转化为一个二进制字节流的过程,也就是我们常说的序列化,而 “unpickling” 是相反的操作,会将字节流转化回一个对象层次结构。
当然在Python 中并不止pickle一个模块能够进行这一操作,更原始的序列化模块如marshal,同样能够完成序列化的任务,不过两者的侧重点并不相同,marshal存在主要是为了支持 Python 的.pyc文件。现在开发时一般首选pickle。
pickle实际上可以看作一种独立的语言,通过对opcode的编写可以进行Python代码执行、覆盖变量等操作。直接编写的opcode灵活性比使用pickle序列化生成的代码更高,并且有的代码不能通过pickle序列化得到(pickle解析能力大于pickle生成能力)。
既然opcode能够执行Python代码,那自然就免不 ...