ugonfor.
Home
  • 분류 전체보기 (86)
    • Study (39)
      • Paper Review (3)
      • 대회 후기 (7)
      • Reversing Skills (5)
      • Develop (1)
      • Pwnable (2)
      • Tips (21)
    • Writeup (39)
      • Wargame_Writeup (31)
      • CTF_Writeup (8)
    • CS (0)
      • Algorithm (0)
      • Operation System (0)
      • Computer Network (0)
    • Etc (8)
      • Life (7)
Home
  • 분류 전체보기 (86)
    • Study (39)
      • Paper Review (3)
      • 대회 후기 (7)
      • Reversing Skills (5)
      • Develop (1)
      • Pwnable (2)
      • Tips (21)
    • Writeup (39)
      • Wargame_Writeup (31)
      • CTF_Writeup (8)
    • CS (0)
      • Algorithm (0)
      • Operation System (0)
      • Computer Network (0)
    • Etc (8)
      • Life (7)
블로그 내 검색
About Me

ugonfor.

보안 위주로 가볍게 작성하였습니다 :)

  • Writeup/CTF_Writeup

    IDAPython Example - MidnightSun CTF 2021 Qual - labyrevnt

    2021. 4. 11.

    by. ugonfor

    github.com/sajjadium/ctf-archives/tree/master/MidnightSun/2021/Quals/rev/Labyrevnt
    Can get the binary on this link.
    github.com/inforion/idapython-cheatsheet
    If you're not familiar to IDAPython, read above cheatsheet.

    And this is the solution code for this chall.
    It was good for training IDAPython.

    import ida_bytes
    walk_end = 0x59BE5
    eip = walk_end
    _input = []
    _addr = []
    _str = []
    _need = dict()
    print("START")
    cnt = 0
    while 1:
    cnt += 1
    if cnt > 1000: break
    for i in XrefsTo(eip):
    tmp = i.frm
    break
    eip = tmp # call inst
    prev = prev_head(eip)
    for i in XrefsTo(prev):
    tmp = i.frm
    break
    _jmp_a = tmp
    j_prev = prev_head(_jmp_a) # cmp
    _addr.append(hex(j_prev))
    if get_operand_value(j_prev, 1) == 0:
    data_ins_addr = prev_head(prev_head(prev_head(j_prev)))
    print(hex(data_ins_addr))
    data = get_operand_value(data_ins_addr,1)
    print(hex(data))
    target_value = j_prev - data + 0x100000000
    idx = 0
    for i in range(40):
    if target_value == ida_bytes.get_dword(data + 4*i):
    idx = i
    break
    _str.append(chr(idx + get_operand_value(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(prev_head(j_prev))))))))))),1)))
    else:
    _str.append(chr(get_operand_value(j_prev, 1)))
    _need[hex(j_prev)] = chr(get_operand_value(j_prev, 1))
    _ft = get_next_func(get_prev_func(eip))
    if _ft == 0x625B : break
    eip = _ft
    print(_addr)
    print("".join(_str[::-1]))

    연합하여 했는 데, 다들 잘하시는 분들도 많고 열정 가득한 분들도 많아서 재밌게 한 듯.
    근데 문제가 진짜 게싱요소가 너무 많아서 좀;;

    오랜만에 24시간 풀타임 뛰어서 재밌긴 했는 데, 문제 퀄이 게싱없이는 못푸는 거도 많고, 여기저기 좀 허술한 부분들이 많아서 아쉽기도 했습니다...

    저작자표시 비영리 변경금지 (새창열림)

    'Writeup > CTF_Writeup' 카테고리의 다른 글

    [ ASIS CTF 2020 ] Latte  (0) 2020.07.06
    [ Defenit CTF 2020 ] Lord fool song remix  (0) 2020.06.08
    [ Defenit CTF 2020 ] momsTouch  (0) 2020.06.08
    [ RCTF 2020 ] rust-flag  (0) 2020.06.02
    [ CODEGATE 2020 Preliminary ] RS(702pt) wripte-up  (3) 2020.02.09

    댓글

    관련글

    • [ ASIS CTF 2020 ] Latte 2020.07.06
    • [ Defenit CTF 2020 ] Lord fool song remix 2020.06.08
    • [ Defenit CTF 2020 ] momsTouch 2020.06.08
    • [ RCTF 2020 ] rust-flag 2020.06.02
    맨 위로
전체 글 보기
  • Githug
  • Facebook
  • ugonfor.kr
  • Portfolio
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
ugonfor

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.