2024年11月第四周周报
2024年12月第一周周报
完成事项
- WSL+Pwn环境的配置(安装pwntools、WSL+IDA动态调试、WSL+VSCode半本地编程)
- 学习了C++字符串函数
- Pwn学习路线规划
未完成事项
- 复盘新生赛Pwn题目
- NewStar CTF Pwn题目复盘
如何解决未完成事项
下周开始刷
下周待做事项
- 完成上周未完成事项(两个比赛的复盘)
- 看Cyberangel的语雀
本周学习的知识分享
一、WSL2+VSCode编译环境的搭建(在Windows配置WSL2+VSCode编程环境 - _ljnljn - 博客园)
感觉周围的人都是用的虚拟机运行linux+vscode,今天我想到一个更好的方法,用wsl2+vscode混合,可以在windows本地编代码,然后在linux内编译运行,非常的高效
1、开始菜单里搜索功能,并打开启用或关闭Windows功能

打开框出的三个功能
然后重启
2、在微软应用商店搜索kali linux(或者任何一个linux版本)安装

3、安装完成后,在kali linux下输入如下命令,安装工具集
1 | sudo apt update && sudo apt upgrade |

(如果想要GUI的话可以安装win-kex,大佬链接:https://zhuanlan.zhihu.com/p/263658960)
4、vscode连接wsl
拓展里搜索wsl
按ctrl+shift+p打开命令界面,输wsl,选择WSL:Connect to WSL
5、vscode拓展的安装
由于wsl连接的vscode拓展安装在wsl内,所以要重新安装拓展
点击“在WSL:”这个按钮安装
6、vscode(wsl)的基本使用
C++的运行
直接运行debugger就行
没有的话先在终端运行
1 | apt install gcc |
Python的运行
可以这样(右键-Run Python-Run Python in Terminal)
如果想要用Python Debugger运行的话看这个教程:https://blog.csdn.net/weixin_49895216/article/details/131696960
二、WSL中搭建Pwn环境(Kali Linux的Pwn环境搭建)
链接指北:
1、安装pwntools、gdb等插件
参考链接:https://blog.csdn.net/Bossfrank/article/details/130213456
2、途中出现以下问题解决方案
链接:https://blog.csdn.net/2202_75762088/article/details/134625775#/
1 | error: externally-managed-environment |
3、简易快速入门
链接:https://blog.csdn.net/weixin_45004513/article/details/117332121
导入Pwntools
1 | from pwn import * |
链接
1 | r = remote("目标地址str类型", 目标端口int类型)#与服务器交互 |
构造payload之打包
1 | p64(int)#将int类型打包成64位存储 |
发送
1 | r.sendline(playload)#发送playload为一行(自动在尾部加上\n) |
接收
1 | r.recv()#接收到结束 |
打开交互
1 | r.interactive()#一般在末尾都要加 |
三、WSL2+IDA实现半本地动态调试(IDA+WSL2实现本地linux动态调试)
1、首先在ida安装目录找到dbgsrv这个文件夹,打开后把“linux_server”这个文件拖到你的linux中(我放在/root位置)
2、然后赋予两个文件权限(linux-server和要调试的文件)
1 | chmod +x /root/linux_server |
然后运行调试组件
1 | /root/linux_server64 |
参数:
“-p端口”:用于设置备用TCP端口,以便服务器进行监听。默认端口是23946
“-P密码”:用于设置客户端连接调试服务器必需的密码,防止未授权连接。
“-v”:将服务器置于详细模式。
然后打开ida,按F9选择调试器
如果出现这个选择Yes
上面的前两个输文件所在linux的目录,第三个输文件路径,下面填上终端显示的my ip,密码为linux账号的密码

(当然,如果懒得移动文件,ida也可以把文件自动导入到linux中,只需要路径不正确就行)
如果配置都没有问题,接下来应该就会进入动态调试界面了

四、C++字符串函数(C++字符串函数 - _ljnljn - 博客园)
两种字符串定义(C++):
| 字符串变量 | 字符数组 | |
|---|---|---|
| 定义 | string str; | char str[100]; |
| 求长度 | str.length();/str.size(); | strlen(str); |
| 输入字符串 | getline(cin,str);可以读入一行字符串,可以包含空格,遇到回车结束/cin>>str;可以读入一连串的字符,遇到空格or回车结束/scanf(“%s”,&str);遇到空格结束 | cin.getline(str,sizeof(str));需要提前固定好输入的字符串的长度,避免输入的字符超出界限 |
| 分割截取 | str.substr(7,3); // 从下标7开始截取子字符串,截取长度为3的字符串 | |
| 查找指定子字符串 | place=str.find(“hi”); | |
| 替换字符串中的一部分 | str.replace(7, 5, “helloa”);替换从下标7开始的5个字符为”helloa” | |
| 在指定位置插入字符串 | str.insert(5, “try”); | |
| 复制字符串 | string str3(str1)/str3=str1; | str3 = str1; |
| 排序 | 需要头文件#include <algorithm> sort(s.begin(), s.end()); | |
| 删除 | s.erase(s.begin()+2);使下标2的字符删掉 | |
| 在字符串中添加字符 | s.push_back(‘a’); |
C语言:
#include<cstring>
(1)复制字符串:strcpy(s1,s2);//复制s2到s1中
(2)连接字符串:strcat(s1,s2);连接字符串 s2 到字符串 s1 的末尾。
string str = str1 + str2;连接字符串也可以用+号
(3)返回字符串长度strlen(s1);
(4)比较字符串:strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
(5)查找字符strchr(s1, ch);返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
五、Pwn的基本学习路线(Pwn学习路线 - _ljnljn - 博客园)
来源:CTF竞赛权威指南(Pwn篇)
带索书号的是可以在图书馆借的
1、底层代码学习
编程基础:Python/C/C++/汇编语言
其他知识:计算机组成原理、操作系统、编译原理
课程:
网易云课堂的“顶尖中文大学计算机专业课程体系”
https://study.163.com/curricula/cs.htm
2、静态反编译
熟练掌握IDA、Radre2等
熟练阅读反汇编代码,理解x86、ARM、MIPS二进制程序
3、动态调试
熟练掌握GDB、x64dbg等
2/3推荐资料:
- Secure Coding in C and C++, 2nd Edition(TP312C/775)
- The Intel 64 and IA-32 Architectures Software Developer’s Manual
- ARM Cortex - A Series Programmer’s Guide
- See MIPS Run, 2nd Edition
- Reverse Engineering for Beginners
- 《程序员的自我修养 —— 链接、装载与库》(TP311.1/65)
- 《加密与解密,第 4 版》(有PDF)
4.软件漏洞学习
多读WriteUp
- 常见漏洞(溢出、UAF、double - free 等)的原理
- Linux 漏洞缓解机制(Stack canaries、NX、ASLR 等)
- 针对这些机制的漏洞利用方法(Stack Smashing、Shellcoding、ROP 等)
推荐资料: - RPI CSCI - 4968 Modern Binary Exploitation
- Hacking: The Art of Exploitation, 2nd Edition
- The Shellcoder’s Handbook, 2nd Edition
- Practical Malware Analysis
- 《漏洞战争:软件漏洞分析精要》
5.程序分析理论
- 数据流分析(工具如 Soot)
- 值集分析(BAP)
- 可满足性理论(Z3)
- 动态二进制插桩(DynamoRio、Pin)
- 符号执行(KLEE、angr)
- 模糊测试(Peach、AFL)
这些技术对于将程序分析和漏洞挖掘自动化非常重要,是学术界和工业界都在研究的热点。
感兴趣的还可以关注一下专注于自动化网络攻防的 CGC 竞赛。
推荐资料: - UT Dallas CS-6V81 System Security and Binary Code Analysis
- AU Static Program Analysis Lecture notes
6.继续提升
- 阅读论文
- 收集和订阅一些安全资讯(FreeBuf、SecWiki、安全客)、漏洞披露(exploit - db、CVE)、技术论坛(看雪论坛、吾爱破解、先知社区)和大牛的技术博客,这一步可以通过 RSS Feed(我用的tiny tiny rss)来完成。
- 随着社会媒体的发展,很多安全团队和个人都转战到了 Twitter、微博、微信公众号等新媒体上,请果断关注他们(操作技巧:从某个安全研究者开始,遍历其关注列表,然后递归)
本周自己学习过程中遇到的问题和疑问点
- IDA还不是很会用┭┮﹏┭┮
- 对Pwn题目不是很熟悉
(其实就是不会),还需要多学
情感、思考、观点
初来乍到,要学的东西还很多,加油,奥利给
- 标题: 2024年11月第四周周报
- 作者: ljnljn
- 创建于 : 2024-12-01 17:41:00
- 更新于 : 2026-05-25 22:04:46
- 链接: https://ljnljn2005.github.io/2024/12/01/2024年11月第四周周报/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
