본문 바로가기

WARGAME

(90)
pwnablekr codemap 과제를 하면서 푼거를 추가해야지 흠우선 EAX와 EBX를 보란다. 보면 EAX에는 사이즈가 들어가고 EBX에는 이상한 문자열이 들어있다. 이렇게 생성하는데 다른 방법보다도 그냥 pydbg로 죄다 파싱했다. 저 1000개의 값중 2번째로 사이즈가 큰거에 스트링을 묻는다 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647from operator import itemgetterfrom pydbg.defines import *from pydbg import *import pefile result = {} def entry_point(dbg): disasm = dbg.disasm(dbg.exception_addr..
[Noe.systems] The Shape of Voice [Forensic] 이런 png 이미지 파일을 주는데 중간에 보면 또 다른 이미지 파일이 한개있다. 자세히 보면 이상한데 시작헤더와 마지막 헤더가 붙어있다???? ㄷㄷㄷㄷ 그리고 시작헤더 바로 옆에 있어야할 IHDR이 맨 밑에 있다. 그렇기 때문에 제대로 맞춰줘야한다제대로 순서대로 맞추면 이렇게 되는데 그래도 검은사진이다. 잘 보면 Idat도 순서가 바껴있는데 이 프로그램 (개꿀 프로그램)을 통해서 IDAT 순서도 위로 올려줬다
[Noe.systems] card [Pwnable] main의 소스를 보면 이렇게 되어있는데 우선 flag_read 함수를 볼 수 있다 이게 플래그 함수다. 이건 메뉴다 이문제는 Plaid-ctf-prodmanager와 비슷하다. 1번을 눌러서 make_card 함수를 보면name addr job 입력을 받는데 malloc으로 할당한 공간에 값을 넣는다 여기 malloc다음 f8을 한번 누르면 레지스터창에 힙 주소를 알 수 있다 이런식으로 malloc 후 free하고 다시 그 위에 값을 쓰면 저런식으로 값이 나온다 이렇게 되는걸 알 수 있는데 계속 해보니깐 152바이트까지는 출력이 된다그러니 152를 넣고 flag_read에 있는 stream 주소를 넣으면4번을 눌렀을 때 플래그를 보여준다. 12345678910111213141516171819202122..
[Noe.systems] LoginSystem [Reversing] 우선 이 문제는 50점짜리랑 난이도가 비슷했다음.... 그냥 80점 이지크랙이 좀 더 시간 잡았다 아이디 비교전 함수가 3개 보이는데1번은 id와 pw를 입력받는 곳이다. 2번째는 내가 입력한 값을 연산해서 저장한다. 3번째는 2에서 연산한 결과에 다시 또 연산한다. 이 값을 G@ytOr!es 이거와 비교한다.그렇다면 역연산을 짜고 돌리면 ID를 알 수 있다.그 후에 패스워드를 비교하는 함수안으로 들어가게 된다. 이게 패스워드를 비교하는 부분인데 아이디와 마찬가지로 함수 2개의 연산을 거친 후저 이상한 값과 비교를한다. 근데 첫 번째 함수를 보면 저기 *(v4 + 1LL + a1) 이 값을 알 수 없다그래서 디버깅을 해봤는데 ID에서 적은 값을 바탕으로 가져오게 된다. 그 다음 첫 번째에서 연산한 값을 ..
[Noe.systems] Easy keygen [Reversing] 이런 프로그램이 나온다 Easy Keygen Problem:'2A4542735D5F4D3B71774F7026'에 해당하는 시리얼 키를 가진 닉네임을 구하여라! Auth format:※ 인증키: 주어진 시리얼 키에 해당하는 닉네임 첨에 문제를 잘못 이해해서 저 헥스값이 닉네임일 때 시리얼 구하는줄 알고 그렇게 구했다가 노답이였다문제는 저게 시리얼이 되는 키값을 구하는건데 123456789101112131415161718result = ""result += chr(0x2A)result += chr(0x45)result += chr(0x42 - 2)result += chr(0x73)result += chr(0x5D - 4)result += chr(0x5F)result += chr(0x4D - 2)result ..
[Noe.systems] Break Time [Reversing] 비교적 소스는 간단했다 또 같은실수를했는데-를 왜 +로 안바꿨는지 이거 떄문에 한 5분 잡았네12345678a = "=F=o@q[]JS=cwE^=
[Noe.systems] Double Double [Misc] 15점으로 간단한 문제다 그냥 3번 아무값이나 곱했을 때 랜덤수를 2개나오게하면된다 ex) 987이 나오면? ? ? 이렇게 3번 곱해서987987 이래 나오게하면된다처음에 이건 고정값이 있을거 같다고 생각했는데 만약 876이란 값이 있으면876 * ? * ? * ? == 876876이렇게 된다그렇다면 ? * ? * ? = 876876/876이 된다즉 ? * ? * ? = 10013번을 곱해서 1001을 어떻게 만드냐그냥 1 * 1 * 1001 하면된다끝~NOE{fUnfUnm4thtr1ck}
securitytraps.pl whereami 보호되어 있는 글입니다.