![article thumbnail image](https://blog.kakaocdn.net/dn/mdm0h/btq3huwXcKt/ifZVWzWDheIF9PN0R5YQP1/img.png)
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 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 |