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 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 |