pwn探索--大杂烩
pwn的核心:二进制漏洞的利用和挖掘研究层次:编译成机器码的二进制程序的漏洞二进制程序实际为可执行文件linux系统下ELF=windows系统下EXE文件一次简单的hack
CTF中pwn攻击脚本思路:
1.pwn程序/服务器(必不可少滴)开端——>from pwn import*2.使用python中pwn tools用remote函数打开远端需要攻击的服务器端口3.进行链接4.构造恶意数据5.发送恶意数据6.使用交互函数(io.interactive())获取flag
程序的编译与链接
linux借助文件头进行识别!(用vim打开可查看源码–>%!xxd可查看十六进制表示)
编译过程ls指list file即列出文件;可用ll查看文件详细内容。gcc兼具编译器和汇编器的功能。ctrl+alt+t 启动shell
Linux环境下执行可执行文件!xdd%-r 还原文件rm a.out 删除./a.out 是linux/unix环境下gcc编译源代码(c/c++)并连来接产生的默认执行文件名。./a.out ...
The Missing Semester of Your CS Education
The Missing Semester of Your CS EducationFirst Course Overview The Shell命令行语句
pwd(process[print] working directory)
输出当前位置
cd .
到当前目录
cd ..
上一级目录
cd /cd ~
回到根目录
cd -
回到跳转前的目录(可在两个目录之间切换)
ls -l
列出当前目录下子文件的详细信息
ls -a
列出所有文件包含隐藏文件
* ?
代替一个字符串 一个字符
mv A B
重命名并可以移动文件
cp A B
复制并可以移动文件
control L
清除终端
cat
打印文件内容到终端上
touch
建立新文件
>>
不覆盖而是叠加
A | B
A的输出作为B的输入
grep A B
在A里查找B
man,rm,mkdir,rmdir
> /
覆盖
rm用于无递归删除 -r 递归删除 rmdir仅允许删除空目录
mkdir 创建目录 ...
Docker部署小记
上次出题还是上次,好多指令已经记不清了.暂时写在这里,给自己也给以后的你们查阅.
有用的工具如果你去喜欢的浏览器搜索,不难发现xinetd确实很实用.(笑)
1git clone https://github.com/Eadom/ctf_xinetd.git
安装之后发现长这样
手搓docker-compose.yml(不会也可以找人机hh).
123456789101112version: '3' services: pwn: build: ./ image: pwn #这里的image写自己创建的镜像名 ports: - "60001:9999" pids_limit: 1024 # cpus: 0.5 restart: unless-stopped # privileged: true
ctf.xinetd文件
1234567891011121314151617181920service ctf{ ...
2024CUDSEC新生赛
CUDSEC——第七届”玄武杯”Pwn方向WPsign签到题没什么好说的 flag写在程序里 拖进IDA秒.
easy_shell算加强版签到了 运行程序看到
提示给了shell 那是提供了后门的(进IDA分析也能看到)直接
1ls 1>&0
打远程加上flag查看就好了.
1cat flag 1>&0
如果说为什么出这个感觉不沾边 问就是之前给新同学们布置过相关学习任务 考察一下(欢迎非预期的佬们交流~
only_chance这题有学弟卡在第二次地址接收 其实主要还是栈的工作原理理解的不是特别透彻(反思ing
运行其实就有提示没有后门怎么搞 八成要自己构造shellcode多打几次IDA分析发现gets s的大小是280 这里就可以利用栈溢出重定向到main进行第二次程序运行执行shellcode使用NOP sled确保在返回到 shellcode 时,即使位置偏移,程序也会“滑行”到有效的指令区域(2048也111)
exp
12345678910111213141516171819202122232425262728293031323334fro ...
AI Agent源码阅读学习小记
最近读到一篇很长的文章:AI Agent 之我见。原文从 Claude Code、OpenAI Codex、Bub、Pi 这些 Coding Agent 的源码和实现差异出发,聊了上下文压缩、多 Agent、Shell 执行、安全模型和 prompt cache。
这篇不是转载,而是我作为学习者读完后的整理。以前看 Agent 更多是看“怎么用”,这篇文章提醒我:真正有价值的地方不只是功能说明,而是源码里那些边界处理、失败兜底和工程取舍。
读源码比读教程更能看到问题本身教程通常会告诉我们一个 Agent Loop 长什么样:接收任务、规划、调用工具、观察结果、继续下一轮。但源码会暴露更真实的问题,比如:
上下文快满了怎么办?
自动压缩失败后要不要重试?
子 Agent 如何避免无限递归?
执行命令时如何处理超时和子进程?
自动模式下哪些命令必须拦住?
这些问题都不是“会不会写一个 demo”能覆盖的。一个 Agent 真正要长期跑起来,难点往往在异常路径里。
上下文压缩不是简单摘要原文让我印象最深的是 compact。之前我对上下文压缩的理解比较粗糙:上下文太长了,就让模型总结一下 ...
美团技术文章阅读小记1
美团技术文章阅读小记团购订单系统问题
团购系统和其他胸痛高耦合,修改冲突
单点存储多
架构不合理
解决方案
有限时间内优先急易,分步骤解决
FightPart项目疑问记录
需求分析
用户自定义添加标签,标签的分类(类型,怎么分类)比如Java/C++/网络安全,工作/大学
主动搜索,允许用户根据标签去搜索其他用户
组队
创建队伍
加入队伍
根据标签查询队伍
邀请其他人
退出队伍
允许用户修改标签
推荐
相似度计算算法+本地分布式计算
后端技术栈
Java+SpringBoot框架
SpringMVC+MyBatis+MyBatisPlus(提高开发效率)
MySQL数据库
Redis缓存
Swagger+Knife4j接口文档
数据库表设计标签的分类(有哪些、怎么分)不建议使用boolean定义,不灵活
新增标签表(分类表)建议用标签,不使用分类,更灵活.性别:男、女学习方向:Java、C++、Go、前端、网络安全目标:考研、考公、春招、社招、竞赛、转行、跳槽段位:身份:状态:着重自定义
表设计
id int 主键、
标签名 varchar 非空(必须唯一,唯一索引)
上传标签的用户 userld int(如果要根据 userld 查已上传标签的话,最好加上,普通索引)
父标签 id ,parentld,int( ...
HomeGal项目疑问记录
UserCenter 项目疑问记录如何进行企业级开发?其实不管做什么都需要事先做好规划.项目要实现的功能是什么,要怎么实现,做一个具体规划(预估时间),先完成框架搭建再去细化.
项目完整开发流程
需求分析
设计(概要设计、详细设计)
技术选型(前端/后端)
初始化(前端/后端),引入需要的技术
搭建框架(Demo)【引入框架后可依据需求瘦身】
实现业务逻辑
测试(单元测试)
代码提交/代码评审
部署
发布
Tips
框架瘦身阶段,每次删除一个文件都要重启项目是否能运行.
多查看官方文档.
养成好习惯,数据库相关操作语句做好本地或云端备份.
需要掌握的基本知识
controller:只需接收请求,不做任何业务处理.倾向对请求参数本身的校验,较少涉及业务逻辑校验.service: 业务逻辑处理(校验)有可能被contoller之外的类调用mapper(dao):数据访问层model:数据封装类utils:工具类(比如加密,日期转换,日期转换)Lombook:帮助生成小的Java类实体对象
Spring Boot框架整合
创建数据库
建表
引入需要的 ...
yubのAlgorithm.0x20.
分割回文串link:131. 分割回文串 - 力扣(LeetCode)
思路分析主题思想是和之前做的组合II相同的,问题的关键难点就是在怎么处理切割上.首先递归参数传入startIndex是表示下一轮递归遍历起始位置,那么startIndx就是作为我们的切割线一角色.再看回文子串如何判断?采用双指针法,一个在头一个在尾前后指针指向位置的元素相等就是回文串了.
1234567891011121314151617181920212223242526272829303132333435class Solution { List<List<String>> res = new ArrayList<>(); Deque<String> deque = new LinkedList<>(); public List<List<String>> partition(String s) { backtracking(s,0); return res; ...
yubのAlgorithm.0x19.
组合总和link:39. 组合总和 - 力扣(LeetCode)
思路分析其实思路和昨天的很像,但是元素可以复用而且也不是字符串.那还是依旧使用path进行记录,res进行返回结果,sum进行统计最后再加上一个标记位置进行判断即可.
1234567891011121314151617181920212223242526class Solution { List<Integer> path = new LinkedList<>(); List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> combinationSum(int[] candidates, int target) { int startIndex = 0; backstracking(candidates, target, sum, startIndex); return re ...






