ctfshow刷题记录-web351
今天学学 ssrf,有些服务器的某些资源可能会规定请求必须来自内网才能访问资源,如果不是内网用户则会被拒,而 ssrf 就能为我们提供一个内网访问的通道。
浅析ssrf
在计算机安全中,服务器端请求伪造(英语:Server-side Request Forgery,简称SSRF)是攻击者滥用服务器功能来访问或操作无法被直接访问的信息的方式之一
在之前做过的题目种,我们已经初步接触过本地网页限制访问资源的例子,但是我们都可以伪造,比如 referer 字段或者是 X-Forwarded-for 字段,因为包含在我们请求的 headers 中,因此我们可以直接伪造。但是 $_SERVER 就是我们所不能伪造的了,这个变量是什么呢?
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。这也就意味着大量的此类变量都会在» CGI 1.1 规范中说明,所以应该仔细研究一 ...
ctfshow刷题记录-web258
ctfshow的刷题记录-web258
反序列化寻思着多做点吧,反序列化主要就是写poc,去构造符合要求的对象。
分析源码123456789101112131415161718192021222324252627282930313233343536373839404142434445<?phperror_reporting(0);highlight_file(__FILE__);class ctfShowUser{ public $username='xxxxxx'; public $password='xxxxxx'; public $isVip=false; public $class = 'info'; public function __construct(){ $this->class=new info(); } public function login($u,$p){ return $th ...
CSAPP第二章复习
之前 CS:APP 没有好好学,今天下定决心来重新看一遍,并把实验好好做一遍以巩固自身。
信息存储数字表示二进制:区别于我们平时计数使用的十进制,二进制使用的是逢二进一原则,而我们的十进制则是逢十进一,比如我们十进制的 9+1 中的 9,答案应该是十,但是十应该进一,因此得出了我们常规的答案 10。在二进制里面,每一位只要大于等于 2 则都要向高位进一。为了方便表示,还衍生出了二进制的子类,比如八进制,十六进制等,主要是二进制向这R
些进制转换较为容易,而计算机平时又都处理二进制数据,因此就出现了这些常见的进制计数。
信息存储大多数计算机使用的都是8位(在计算机中,除特殊说明外,一位均指的是二进制的位)的块,或者叫字节,字节是作为计算机可寻址的最小单位。一般来说我们并不习惯于将一个字节写成八位二进制的数,而是会写成两位十六进制的数。十六进制与二进制之间的转换也会十分容易,举个例子:
120x99->0b100110010x88->0b10001000
我们可以发现我们并不用像十进制那样权值相加或者是除二取余那么麻烦,我们把一位十六进制视为四位二进制即可,这样我们在转换 ...
CISCN2022 初赛WP
咕了有点久了,来发一下
CISCN2022初赛WP一、 战队信息战队名称:flag虽不能至,然心向往之
战队排名:第130名
Crypto签到电台根据题目的提示从公众号获取两个hint:
在“标准电码表”找“弼时安全到达了”所对应的7个电码,再跟“密码本”的前7*4个数字分别逐位进行“模十算法”(加不进位、减不借位),所得到的就是要发送的电码。发送电码前先发送“s”启动,即按3个“.”,这个发送电报的过程可以使用抓包软件进行抓取,可方便输入电报。
“弼时安全到达了”所对应的7个电码:1732 2514 1344 0356 0451 6671 0055。模十算法示例:1732与6378得到7000,发包示例:/send?msg=s
然后访问/secret看到密码,取前28个做模10运算,再用hint2的发包方式发送得到flag。
基于挑战码的双向认证这题给了 ssh,有权限就想着先连一下,连上去之后试试 find / | grep "flag.txt" 找到一个类似 flag的东西,但是不是 flag,此时又看到两 ...
Educational Coeforces Round 129(Div.2)题解
这波 div2 上大分,写波题解。
实况录屏在这
A. Game with Cards题目描述
题目分析题目的意思就是说,Alice 和 Bob 分别有 n,m 张牌,然后每次出牌不能小于等于上一次的出牌,如果到自己的回合却不能出牌则判负,问如果两人分别先手,谁会赢?这个稍微想一下就能发现我一开始出最大的一定是最优的策略,比的就是最大值谁最大,假设相等那我肯定出最大的那个我必赢,所以无脑比最大就是这题的思路,如果相等那么谁先手谁赢,所以这里就分三种情况:
max1>max2:Alice必赢
max1<max2:Bob必赢
max1==max2:谁先手谁赢
标程12345678910111213141516171819202122232425262728293031323334353637383940#include<bits/stdc++.h>#define maxn 200005using namespace std;int a[maxn];char s[maxn];void solve(){ int n,x; cin>&g ...
KCTF2022春季赛 第六题 writeup
KCTF2022春季赛 第六题 writeup
这题,BROP提示给的很明显,所以就是盲打,不管怎么说先问(bao)候(da)一下出题人。
首先我们一开始什么都不知道,就先确定一下一些基本信息,那么就先测试一下缓冲区的长度,最后发现缓冲区长度为0x10。
我们先执行一遍正常流程,大概就是:
输出一句话
输入
输出一句话
当存在栈溢出的时候,最后一句话输出不出来,因此可以断定,溢出是发生在自己定义的函数的。大概写一下伪代码:
12345678910#include<stdio.h>void func(){ char buf[16]; gets(buf);}int main(){ puts("hacker, TNT!"); func(); puts("TNT TNT!");}
当然,输出第一句话的语句可能也在 func 里面,但是不影响,我们先爆破第一个字节
123456789101112131415from pwn import *#context.log ...
Codeforces Round 788(Div.2)题解
Codeforces Round #788 (Div. 2)题解。
实况在这里
A. Prof. Slim题目描述:
题目分析给你一个序列,一次操作会使序列中的两个数交换符号但不交换大小,问能否在若干次操作后使得序列不递减。容易得到负数的个数一定不变并且负数永远小于正数,因此最后的结果一定是负数全在前面,正数全在后面,因为一个位置的数的绝对值一定不会改变,所以可以得到在绝对值中,负数区域一定不递增,正数区域一定不递减。先 O(n) 统计所有的负数的个数,再判断就ok了。
标程12345678910111213141516171819202122232425262728293031323334353637383940414243#include<bits/stdc++.h>#define maxn 200005#define maxx 40005//#define int long long#define OK {puts("YES");}#define NO {puts("NO");return; ...
Codeforces Round 787(Div.3)题解
Codeforces Round #787 (Div. 3) 题解来了。
实况在这里
A. Food for Animals题目描述
题目分析给你猫粮,狗粮和猫和狗都能吃的粮的个数,再给你猫狗的个数,问能否使得猫狗都有一份粮食能吃。这里我操之过急,导致WA了一发,血亏。就是说你可以先判断狗粮是否够,如果不够则通用粮食减去剩余的数目,然后在判断通用粮食和猫粮是否大于等于猫的个数就行了,但是非常要注意,通用粮食的个数不能出现负数,因为这里没判断wa了一发,很难。
标程12345678910111213141516171819202122232425262728293031323334353637383940#include<bits/stdc++.h>#define maxn 200005#define maxx 40005//#define int long long#define OK {puts("YES");}#define NO {puts("NO");return;}using na ...
sql注入总结
sql学了也有一段时间了,想着把能用到的知识点都写一遍好。
WEB框架web应用一改我们平时常见的 p2p 和 C/S 模式,采用 B/S 模式。随着网络技术的发展,特别随着Web技术的不断成熟,B/S 这种软件体系结构出现了。浏览器-服务器(Browser/Server)结构,简称 B/S 结构,与 C/S不同,其客户端不需要安装专门的软件,只需要浏览器即可,浏览器与Web服务器交互,Web服务器与后端数据库进行交互,可以方便地在不同平台下工作。
比如我们玩的英雄联盟就是典型的 C/S 结构的服务,因为有大量图片资源和 3D 模型存储在本地,因此提前安装好客户端就可以方便地与服务器进行交互,如果采用 B/S 结构的话,在我们游戏开始的时候就要与服务器建立连接,下载好各种资源到本地,然后再与服务器进行交互,各种页游均是 B/S 结构。B/S 的优势就是对需要服务一方的电脑要求较低,很容易可以兼容系统上的差异,客户往往只需要安装浏览器便可以享受全部的 web 服务。web 应用会先向我们的浏览器发送前端语言 javascript 或者 html 给浏览器解析执行 ...
Codeforces Round 786(Div.3)
Codeforces Round #786 (Div. 3)题解来了
实时录频在这里
A. Number Transformation题目描述
题目分析就是说让你找到两个数 $a,b$,使得 $x\times a^b=y$ 这里可以使得 $b=1$ 然后就判断一下 $y\ mod\ x=0$ 是否成立即可。
标程12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>#define maxn 200005#define maxx 40005#define int long long#define OK {puts("YES");}#define NO {puts("NO");}using namespace std; void solve(){ int x,y; cin>>x>>y; if(y%x==0){ ...