전체 글(603)
-
HACKCTF - DNA
예전에 DISCTF에서 만났던 문제와 동일형식으로 예상되네요. GTCATAATGCCGGGACTTGGT{ACATTC_CAGAAAAAAATT_GGCTATTCT} 위의 문자를 이 형식에 맞게 변환하면 FLAG획득이 가능합니다 :)
2020.07.30 -
HACKCTF - RTL_Core
yes_or_no 랑 비슷한 문제로 보였습니다. 처음에 삽질해서 시간 오래걸렸네요 ㅠㅠ 초기에 실행하면 위와같이 패스코드 입력하라고하고, 어떤 키랑 비교하는것 같습니다. 이 부분을 확인해보면 9번줄을보면 check_passcode($s) == hashcode 를 비교하는데 hashcode = 0C0D9B0A7 입니다. passcode를 체크하는 구간인데, 약간의 역연산이 필요합니다. a1의 주소를입력받아서 4바이트씩 늘려서 5개를 더하는 함수인데 아래와 같은 코드를 작성해서 이를 구할 수 있습니다. 1 2 3 4 5 6 7 8 9 key = 0x0C0D9B0A7 add = key/5 print("add = " + hex(add)) recoveradd = add*5 print("addmulti = " + ..
2020.07.29 -
DreamHack - off_by_one_000
보호되어 있는 글입니다.
2020.07.29 -
DreamHack - basic_exploitation_003
보호되어 있는 글입니다.
2020.07.29 -
ROP 32bit vs 64bit
ROP할때 32bit : 함수호출 --> pr --> 인자 > p32(read_plt) + p32(pppr) + p32(0) +p32(bss) + p32(len(shell)) 64bit : pr --> 인자 --> 함수호출 > p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts']) 이런 식으로 이루어진다. 둘다 개념은 모두 똑같으니 ROP할때 필수적으로 알야아한다. 요즘 문서들의 중요성을 조금씩 느끼고 있다. 진짜 많이 읽어야지..
2020.07.29 -
HACKCTF - 나는 해귀다
해당 문제는 다음과 같이 첨부파일 하나를 주고, 이를 풀어보면 다음과 같은 사진 하나를 준다. hex이야기가 나오니 ihex를 통해 hex를 봐보면 iend로 png파일 하나가 끝난 후에 더 코드가 있는 것을 보니 뒷부분만 추출해서 뽑아보았다. iend가 있어야하는데 거꾸로 된거를 봐서 뒤집어줘야겠다고 생각했다. 다만 고려해야할것이 그냥 뒤집으면 4321 --> 1234 가 되는데 hex특징상 4321 --> 2143 이 되어야하기에 그부분을 고려해서 코딩해줬다. 1 2 3 4 5 6 7 8 9 10 11 12 13 a = "82826042 AE444E45 49000000 001DC6AE DA679F36 2C0FFF7F EFFD0400 00A00944 0000A009 440000A0 09440000 A0..
2020.07.29