profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 4. 23. 00:39

JUMP NOT IS EASY

get_flag() 함수가 있어서 그리로 리턴하는 문제였다.

익스플로잇 코드

 

플래그 획득

 

 

 

JUMP NOT WORKING

64 bit rop 문제였다.

익스플로잇 코드

 

플래그 획득

bof 를 통해서 puts 주소를 leak 한 후, 다시 메인으로 돌아가 leak 한 주소를 통해 system, binsh의 실제 주소를 구해서 system(binsh) 로 구성한 페이로드를 다시 보내서 풀었다.

 

이 문제에서 알게된 점은 두 가지 정도인데, 하나는 libc 버전이 다 다르기 때문에 거기에 맞춰서 offset 을 구해야 한다는 것이다. 그래서 다음 사이트를 통해서 leak된 주소를 기반으로 libc database를 이용해서 libc를 구했다.

libc.blukat.me/

 

libc database search

Query show all libs / start over

libc.blukat.me

두번째로는 libc 2.27 버전 이후에 movaps 명령어가 8바이트가 아니라 16바이트를 땡기기 때문에 앞에 ret을 하나 삽입해줘야 한다는 점이다.

 

 

 

JUMP IS EASY

플래그 획득

이 문제의 경우 NX도 걸려있지 않고 스택에 실행권한도 있어서 쉘코드를 삽입해서 풀려고 했으나 안되었다 쩝..

ASLR 때문에 그럴까봐 nop 을 줘서 풀었는데 64bit 라서 그런지 nop도 잘 안 먹혔다.

그래서 그냥 jump not working 과 유사하게 rop 를 이용해 풀었다.

근데 flag 를 보니 쉘코드 넣어서 푸는게 맞는 것 같은데,, 나중에 롸업을 확인해봐야겠다.

'Hacking > CTF' 카테고리의 다른 글

[CTF] wtfCTF 2021 writeup  (0) 2021.06.06
[CTF] UMDCTF 2021 후기  (0) 2021.04.23
[CTF] HackPack CTF 2021 writeup  (0) 2021.04.22
복사했습니다!