ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk

ssongk

write-up(rev)/reversing.kr

[reversing.kr] Easy ELF write-up

2023. 8. 30. 23:29

IDA로 까보면 다음과 같습니다.

int __cdecl main()
{
  write(1, "Reversing.Kr Easy ELF\n\n", 0x17u);
  sub_8048434();
  if ( sub_8048451() )
    sub_80484F7();
  else
    write(1, "Wrong\n", 6u);
  return 0;
}
_BOOL4 sub_8048451()
{
  if ( byte_804A021 != 0x31 )
    return 0;
  byte_804A020 ^= 0x34u;
  byte_804A022 ^= 0x32u;
  byte_804A023 ^= 0x88u;
  if ( byte_804A024 != 88 )
    return 0;
  if ( byte_804A025 )
    return 0;
  if ( byte_804A022 != 124 )
    return 0;
  if ( byte_804A020 == 120 )
    return byte_804A023 == 4294967261;
  return 0;
}
ssize_t sub_80484F7()
{
  return write(1, "Correct!\n", 9u);
}

 

sub_8048451이 true를 리턴할 수 있도록 만들어주는 값을 역연산하면 됩니다.

다음과 같이 파이썬으로 역연산을 수행합니다.

(바이트 단위이므로 0xff로 마스크를 씌워줘야 함)

byte_804A020 = 120 ^ 0x34
byte_804A021 = 0x31
byte_804A022 = 124 ^ 0x32
byte_804A023 = (4294967261 ^ 0x88) & 0xff
byte_804A024 = 88
byte_804A025 = 0

print(chr(byte_804A020),end='')
print(chr(byte_804A021),end='')
print(chr(byte_804A022),end='')
print(chr(byte_804A023),end='')
print(chr(byte_804A024),end='')
print(chr(byte_804A025),end='')
L1NUX

'write-up(rev) > reversing.kr' 카테고리의 다른 글

[reversing.kr] Replace write-up  (0) 2024.06.01
[reversing.kr] Music Player write-up  (0) 2024.05.31
[reversing.kr] Easy Unpack write-up  (0) 2023.08.30
[reversing.kr] Easy Keygen write-up  (0) 2023.08.18
[reversing.kr] Easy Crack write-up  (0) 2023.08.18
    'write-up(rev)/reversing.kr' 카테고리의 다른 글
    • [reversing.kr] Replace write-up
    • [reversing.kr] Music Player write-up
    • [reversing.kr] Easy Unpack write-up
    • [reversing.kr] Easy Keygen write-up
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바