ctfshow-ssrf
web351:1234567891011121314151617181920212223242526272829303132<?php // 开启PHP文件 error_reporting(0); // 这行代码将PHP的错误报告级别设置为0,意味着关闭所有错误和警告的显示。这通常用于生产环境,以避免暴露敏感信息或错误信息给用户。然而,在开发过程中,保持错误报告开启是推荐的做法,以便及时发现和修复问题。 highlight_file(__FILE__); // `highlight_file()` 函数将指定的文件(这里是当前执行的文件,由 __FILE__ 魔术常量提供)的内容作为HTML格式的高亮源代码输出。这通常用于学习或展示代码,但在生产环境中可能会导致敏感信息泄露。 $url=$_POST['url']; // 这行代码从全局变量`$_POST`数组中获取键名为'url'的值,并将其赋值给变量`$url`。这意味着代码期望通过POST请求接收一个名为'url'的参数。 $ch=c ...
ctfshow-反序列化
一些基础:
private变量会被序列化为:\x00类名\x00变量名protected变量会被序列化为: \x00*\x00变量名public变量会被序列化为:变量名
__sleep() //在对象被序列化之前运行 *
__wakeup() //将在反序列化之后立即调用(当反序列化时变量个数与实际不符是会绕过) *如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法, 则只有 unserialize() 方法会生效,__wakeup() 方法会被忽略。此特性自 PHP 7.4.0 起可用。
construct() //当对象被创建时,会触发进行初始化__destruct() //对象被销毁时触发__toString(): //当一个对象被当作字符串使用时触发__call() //在对象上下文中调用不可访问的方法时触发__callStatic() //在静态上下文中调用不可访问的方法时触发__ge ...
ctfshow-命令执行
Web29:1234567891011 <?phperror_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__);}
过滤了文件关键词,通配符绕过,cat f*,用system执行,发现没有成功读取,考虑使用tac倒序读取,得到flag。
总结,文件关键词过滤可以考虑使用通配符绕过。
Web30:12345678910error_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php/i", $c)) ...
ctfshow-信息搜集
Web1: 题目描述:开发注释未及时删除 。
打开题目后提示web1:where is flag?
ctrl+u读取源码。
Web2: 题目描述:js前台拦截 === 无效操作
打开题目后显示:无法查看源代码
右键无法用,但是ctrl+u可以用。
Web3: 提示要抓包,那就抓包,发送到repeater,响应头里发现flag。
Web4: 题目描述:总有人把后台地址写入robots,帮黑阔大佬们引路。
基础知识:Robots协议(也称爬虫协议,机器人协议等)的全称是“网络爬虫排除协议”,网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
Robots参数:
User-agent:
作用:用于描述搜索引擎蜘蛛的名字;
技巧:
1,当robots.txt不为空的时候,必须至少有一条user-agent的记录;
2,相同名字,只能有一条,但是不同的蜘蛛,可以有多条记录;
Disallow:
作用:用于描述不允许搜索引擎蜘蛛爬行和抓取的url;
使用技巧:
在robots.txt中至少要有一条d ...
pwn学习笔记(9)-中级ROP--ret2csu
pwn学习笔记(9)-中级ROP–ret2csu前置知识 首先是64位文件的传参方式:前六个参数是从左到右放入寄存器:rdi、rsi、rdx、rcx、r8、r9,之后的通过栈传参。
比如:
传参函数大于7个:
H(a,b,c,d,e,f,g,h)
a->%rdi、b->%rsi、c->%rdx、d->%rcx、e->%r8、f->%r9
h->(%esp)
g->(%esp)
call H
先看看如下代码:
12345678910111213141516#include "stdio.h"int H(int a,int b,int c,int d,int e,int f,int g,int h);int main(){ int a = 1,b = 2,c = 3,d = 4,e = 5,f = 6,g = 7,h = 8; printf("%d",H(a,b,c,d,e,f,g,h)); return 0;}int H ...
pwn学习笔记(8)-初识沙箱
初识Pwn沙箱 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。
安全计算模式seccomp(Secure Computing Mode)在Linux2.6.10之后引入到kernel的特性,可用其实现一个沙箱环境。使用seccomp模式可以定义系统调用白名单和黑名单。seccomp机制用于限制应用程序可以使用的系统调用,增加系统的安全性。
在ctf中主要通过两种方式实现沙箱机制:
prctl系统调用;
seccomp库函数;
1、prctl函数初探 prctl是基本的进程管理函数,最原始的沙箱规则就是通过prctl函数来实现的,它可以决定有哪些系统调用函数可以被调用,哪些系统调用函数不能被调用。
下面是/linux/prctl.h和seccomp相关的源码:
1234567891011121314151617181920/* Get/set process seccomp mode */ ...
python原型链污染
python原型链污染 后面会有跟着Article_kelp慢慢操作的,前面先面向题目学习。
背景: 国赛遇到了这个考点,然后之后的DASCTF夏季挑战赛也碰到了,抓紧粗略学一手,学了JavaScript之后再深究原型链污染。
简介: python 中的原型链污染是指通过修改对象原型链中的属性,对程序的行为产生以外影响或利用漏洞进行攻击的一种技术。
在 Python中,对象的属性和方法可以通过原型链继承来获取。每个对象都有一个原型,原型上定义了对象可以访问的属性和方法。当对象访问属性或方法时,会先在自身查找,如果找不到就会去原型链上的上级对象中查找,原型链污染攻击的思路是通过修改对象原型链中的属性,使得程序在访问属性或方法时得到不符合预期的结果。常见的原型链污染攻击包括修改内置对象的原型、修改全局对象的原型等
这个知识点应用的范围比较小,仅当题目中出现utils的merge或Pydash(5.1.2)模块中的set和set_with函数才会用上。
merge(没遇到过具体题型,先简单说下): 首先是下面这个程序,可以再merge打个断点,debug试试看:
...
arcaea闲谈
1、关于我对这些谱面的评价: 我只会挑一些我印象比较深的谱面来说。
<1>9+:(1)sulfer(硫磺):
9+首pm的歌,神谱无需多言,大量的地面交互以及天地交互虽然给不少花紫人带来了巨大的挑战,但是,身为一首9+,它给我们带来的不只是交互力的提升,还有任我们疯狂压榨的ptt,在我花紫以及红框时期,这谱给我的ptt带来了至少0.2的提升妥妥的榨汁机。
<2>10:(1)sheriruth(黑魔王):
谱确实不错,但是,耐不住我在花紫甚至没到花紫的时候高强度越级导致了手癖,最后一直收不了。
总的来说下吧,前面的交互很不错,要求一定的协调性,以及要求一定的底力。在我严重手癖的情况下感觉尾杀稍微有点脑裂以外,其他的整体很不错,神谱。
(2)<3>10+:(1)Cyaegha(绿魔王):
神谱。前面双押海虽然很让人脑裂,但是,只要习惯外加背谱来打的话,就会发现,并没有那么难了,并且这谱后面爽到极致,尾杀部分难度甚至感觉不如某些10.0,纯纯的爽谱,在爽谱中排名前列。
how2heap_zh
由于Pwn的堆方向感觉异常抽象,所以,我想着通过how2heap这个项目来入门heap。但是,由于有的程序不知为何调试总是出问题,不过,我会慢慢来解决的,所以这个文章也是处于慢慢更新的状态。
glibc版本:最新
源码:
123456789101112131415161718192021222324252627282930313233343536#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ fprintf(stderr, "尽管这个例子没有演示攻击效果,但是它演示了 glibc 的分配机制\n"); fprintf(stderr, "glibc 使用首次适应算法选择空闲的堆块\n"); fprintf(stderr, "如果有一个空闲堆块且足够大,那么 malloc 将选择它\n"); fprintf(stderr, "如果存在 use-af ...
Pwn刷题记录(不停更新)
1、CTFshow-pwn04(基础canary) 好久没碰过pwn了,今天临时做一道吧,毕竟刚联合了WSL和VSCode,想着试着做一道题看看,结果随手一点,就是一个很少接触的,拿来刷刷:
先查看下保护:
1234567root@MSI:/home/g01den/Temp# checksec pwn[*] '/home/g01den/Temp/pwn' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)
除了NX之外,似乎就只有 Canary了。反编译看看:
有用的只有vuln函数:
1234567891011121314unsigned int vuln(){ int i; // [esp+4h] [ebp-74h] char buf[100]; // [esp+8h] [ebp-70h] BYREF u ...