목록Hack/CTF (19)
CIDY
CCE 일반부 예선 포넙문제인데 드디어 리뷰한다,, 당시에 거의 근접했었는데 함수 포인터를 뭘로 덮을지 몰라서 날려버린 문제였다. 코드 분량은 얼마 안된다. 근데 뭐 tw에 deaslr처럼 gets만 있는 한줄짜리 코드라도 그지같을 수 있는거고,, 일단 메뉴 들어가기 전 초기 설정. me에 들어가있는 문자열은 heukwoo임,, 0x400 memset때린다. 그럼 마지막 0x10은 초기화 안 된거고, 마지막 칸에는 카나리 들어간다. show는 bss영역에 있는 함수 포인터 같다. show_wallet함수의 주소를 담고 있다. 나머지 byte나 qword설정도 me에서 설정해준 것이다. show_wallet함수로 보아하니 me+32는 현재 내가 가진 돈인듯. 그럼 본격적으로 while문 ㄱㄱ umm,, 그..
간단한 syscall rop문제이다. 금방 풀었는데 로되리안뜨니까 의욕이 팍 식어버려서 던져놨었는데 뒤늦게 까보니 align문제였던 것 같다. ret하나 넣어주니까 remote에서도 바로 플래그 따짐... 코드는 이게 다임. 그냥 진짜 단순한 rop문제이다. open read write exit syscall만 쓰라고 한다. read랑 write는 내부적으로 어차피 동일한 syscall해서 libc만 구하면 바로 쓸수있는데 open이 내부적으로 0x101(257, openat)를 써서 syscall가젯 구하는 과정이 따로 필요할 것 같다. 바이너리에는 syscall ; ret이 따로 없어서 립씨에서 찾아야 한다. 근데 문제는 립씨에도 syscall바로 다음에 ret이 오는게 없믐;;; 그래서 find "..
보호되어 있는 글입니다.