pwn刷题记录 1
注:可用目录快速导航。
前言虽然算法题依然重要,但我想玩点CTF以更好提升自己。
前不久我开始探索WEB安全,但遗憾的是我忘记了在我的博客上记录学习的过程。
目前,我更对自己的定位是web&&pwn。
同时,我也希望通过记录自己的学习和挑战过程来培养一种良好的习惯。
以下从buuctf开始。
test_your_nc12023-08-23
**1.**操作一个在搭建好环境后就可以完成的入门题。
启动靶机,打开ubuntu,terminal,直接输入nc去连接
nc node4.buuoj.cn 29757#端口号按照自己的靶机改
**2.**获取flag输入ls,看到了flag,输入cat flag,得到flag。
rip12023-08-24
**1.**分析:先把vuln放在ubuntu的桌面,在桌面打开terminal,输入“checksec vuln”来检查它是否受保护。
把vuln在ubuntu中拖入terminal进行玩耍,他会要求输入一些东西,
比如输入一个123试试,感受一下它的交互。
将附件vuln拖入windows的IDA分析,需要注意的函数有 ...
NC16644字符串的展开
题目来源【牛客竞赛】:
https://ac.nowcoder.com/acm/problem/16644
题解:
#include<bits/stdc++.h>using namespace std; //引入下面有用到的函数bool isok(char a,char b);string func(const string& p,int p1,int p2,int p3); //喜欢简短主函数,给人清爽的感觉int main(){ int a,b,c;cin>>a>>b>>c; string s; //清楚缓冲区之后再进行读取一整行字符串,也可以把该行直接改成cin>>string cin.ignore();getline(cin,s); //func是一个主要功能实现的函数,把所有参数往里面塞 string ans=func(s,a,b,c); cout<<ans; return 0;}//这是一个判断前后两数是否同为字母或同为数字的 ...
NC16622多项式输出
题目来源:多项式输出
这道题在做的时候给自己挖了个坑,其实把符号、系数、指数分开来看会更好实现。
这里先给出不断调试给出的答案,思路不是一蹴而就的。
一输入:5100 -1 1 -3 0 10输出:100x^5-x^4+x^3-3x^2+10二输入:3输出:-50 0 0 1-50x^3+1
首先看到示例。这样的示例是不够的,因为指数为1的时候x后面是不带“^”的,但是此处并未给出指数为1时的示例,因此可以自己给出一个综合性比较强的调试示例
三输入:50 -1 1 10 0 1 -1输出:-x^4+x^3+10x^2+1
开始our 工程!
#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int cnt=n; int a[10000];
首先进行输入的读取,存到n,由于这个n是题目给出的常量,最好不要动,所以我们用cnt来作为变量暂时存储n,以备不时之需。另外根据示例,我们需要输入n+1个指数,因此用数组来存储。
int i=0; ...
NC16593铺地毯
题目来源:https://ac.nowcoder.com/acm/problem/16593
hello
思路:
就是把每一组地毯存到二维数组里,一行代表一张地毯。
然后自上而下判断某点的地毯,得到的马上break,就是最上面的。
首先进行存储:
int n,res;cin>>n;int a[10000][10000];for(int i=0;i<n;i++){ for(int j=0;j<4;j++){ cin>>a[i][j]; }}
自上而下进行check操作,判断某张毯子是否是答案:
int x,y;cin>>x>>y;for(int i=n-1;i>=0;i--){ if(check(a[i],x,y)){ res=i; break; }}
check稍微用了一下指针,也可以直接用下标的:
bool check(int* p,int x,int y ...
markdown空行添加br脚本
写博客的时候遇到的问题,因为md在web上空行是自动删除的,除非使用</br>,因此编写一下python脚本
def add_br_to_empty_lines(input_file, output_file): with open(input_file, 'r', encoding='utf-8') as file: lines = file.readlines() with open(output_file, 'w', encoding='utf-8') as file: for line in lines: if line.strip() == '': file.write('</br>\n') else: file.write(line)# 使用示例input_md_file = ...
GO语言布局-中文版
Go项目标准布局
English
한국어 문서
简体中文
正體中文
简体中文 - ???
Français
日本語
Portuguese
Español
Română
Русский
Türkçe
Italiano
Vietnamese
Українська
Indonesian
这是Go应用程序项目的基础布局。这不是Go核心开发团队定义的官方标准;无论是在经典项目还是在新兴的项目中,这都是Go生态系统中一组常见的项目布局模式。这其中有一些模式比另外的一些更受欢迎。它通过几个支撑目录为任何足够大规模的实际应用程序提供一些增强功能。
如果你正准备学习Go、正在构建PoC项目或编写玩具项目,那么按照这个项目进行布局就大材小用了。从一些真正简单的事情开始(一个main.go文件就足够了)。随着项目的增长,确保代码结构的合理是非常重要的,否则最终会出现很多隐藏的依赖关系和全局状态而导致这个项目的代码混乱。当一个项目多人同时进行时,就更需要有清晰的结构,此时引入一种通用的项目包/标准库管理工具就显得尤为重要。当你维护一个开源项目或者有其他项目导入了你的代码,那么有一个私有的包(如in ...
go的入门
大纲初学者阶段
基本语法和概念
变量、数据类型(比如整型、字符串)
控制结构(if、for循环)
函数的定义和调用
错误处理(error 类型)
基本的数据结构
数组和切片
映射(map)
结构体(struct)
包(Package)的使用
导入标准库包
创建自己的包
理解包的导入路径和可见性
简单的程序编写
编写小程序,如计算器、简单的文件操作等
工具和环境
Go 工具链(如 go build, go run)
理解 GOPATH 和模块
进阶阶段
并发编程
协程(goroutine)
通道(channel)
sync 包的使用(如 WaitGroup)
更复杂的数据结构
接口(interface)
切片和映射的高级用法
使用指针
错误处理和测试
深入理解 error 接口
编写单元测试(testing 包)
基准测试(benchmark)
网络编程
HTTP 服务器和客户端
使用 TCP/UDP
项目结构和设计模式
组织大型 Go 项目
掌握常用设计模式
高级阶段
性能优化
分析和优化性能(pprof)
内 ...
golang学习笔记
golang基础1.unsafe包解读绕过安全规则的方法,比如获取内存信息的sizeof方法。
unsafe包应当主要用于程序员调试,而不能出现在生产应用。
2.获得字符串的指针sh :=(*reflect.StringHeader)(unsafe.Pointer(&s))
s是字符串,由于字符串的runtime底层包是私有法方法,但是reflect里面有StringHeader方法作为public的映射,因此先强转成指针,然后再强转成StringHeader。注意,这个过程中地址不会发生改变。
其中,包含一个Data指针(原始的int)和一个Len(int)。
3.rune类型是什么?可以理解成utf8的类型。因为不管是一个汉字还是一个字母,都是一个单位的rune。因此它还和传统意义上的char有所区别。它是int32类型,也就是说是int(64)的一半。
4.切片个人感觉go的切片相当于java中的arraylist,进行一个主动开辟空间,然后动态扩容的自动化操作。
那么关于容量调整,其实arraylist和slice都是默认扩大,而不会缩小,除非把它释放。
还有一个点 ...
docker国内镜像最新——备份
DockerHub国内镜像源列表此列表只收录无需限定条件的DockerHub镜像源,感谢这些公益服务者。
2024年6月18日 亲测可用
DockerHub镜像仓库
镜像加速器地址
Docker镜像加速站 722
https://hub.uuuadc.top/
docker.1panel.live
hub.rat.dev
DockerHub 镜像加速代理 316
https://docker.anyhub.us.kg
https://docker.chenby.cn
https://dockerhub.jobcher.com/
镜像使用说明 289
https://dockerhub.icu
Docker镜像加速站 108
https://docker.ckyl.me
镜像使用说明 114
https://docker.awsl9527.cn
镜像使用说明 90
https://docker.hpcloud.cloud
AtomHub 可信镜像仓库平台 112(只包含基础镜像,共336个)
https://atomhub.op ...
CTF web难题收集
命令注入
来自 Leticia’s Blog
常见的备份文件后缀名有 .git .svn .swp .~ .bak .bash_history
ffifdyop经过md5和from hex转化之后会生成’or’6开头的字符串
两个md5哈希可以0e开头若相等
两个md5强相等条件可以用数列绕过去
buuoj好题名单1.[GXYCTF2019]Ping Ping Ping
推荐理由:命令注入
建议:
1.尝试base64绕过和拼接绕过
2.chrome开头加上”view-source:“,可以看全源码(相当于ctrl+u)
2.[强网杯 2019]随便注 1
推荐理由:sql注入
建议:看攻略 https://zhuanlan.zhihu.com/p/545713669
3.【RoarCTF 2019】Easy Calc 1
推荐理由:解释到位
建议:看攻略https://www.dccomics.top/2021/11/11/%E3%80%90RoarCTF%202019%E3%80%91Easy%20Calc%201/
