Profile

머리정리하는곳

c2w2m2

Only Unsorted bin attack

Unsorted bin attack이 가능하고, 전역변수로 힙이 관리되면서, 이를 수정할수 있고, 전역변수의 주소를 알수 있다. 대충 이런 조건이면 Unsorted bin attack만을 활용해서 쉘을 얻어낼 수 있다. 힙베릭, 립베릭, 빈베릭 ( If PIE )가 필요하긴한데, 위 조건을 만족하면 view만 있으면 다 릭할 수 있으니까 크게 상관 없다. 빈베릭이 걸리기는 하지만... 어쨋든 이런 조건이면 전역변수에다가 Unsorted bin attack 으로 main_arena + 88 을 적어준다. 보통 Unsorted bin attack이후의 malloc은 main_arena가 꼬이면서 에러를 뱉는데, 여기서 Edit을 통해서 main_arena를 고쳐줄 수 있다. 이를 고치면서, 뒷부분에는 one..

Pwnable ·

ISITDTU CTF 2018 - dead_note_lv2

off by one 으로 인해서 heap_amount부분에 할당이 된다. 이걸로 적당히 조져서 unsafe unlink해주고 적당히 쉘따면 된다.

Pwnable ·

Asis 2015 - math_sequence

힙오버 있으니까 그걸로 릭하고덮어서 aaw 만들고그걸로 fucntion ptr 덮고nx없으니 쉘코드 올리면 된다.옵셋 대충짠건지 한방에는 잘 안따인다 여러번 해야할듯

Pwnable ·

Seccon2017 - baby_stack

전에 풀어야지 올려놓고 글도 써놓고 까먹고 있다가 이제와서 푼다. 문제보면 message 부분에서 bof를 준다. 막 A넣어보면, fmt.padString부분에서 에러가 난다. ida로 까서 스택보면 stdin부분이 덮히는 걸 볼 수 있다. 이부분을 맞춰주면 되는데, printf가 2번 호출됨으로, 2개 맞춰주면 된다. 그 후에는 걍 c바이너리 rop하듯 rop 해주면 되는데, 왜인지 모르겠지만 syscall이후에 체이닝이 정상적으로 안됐다. 그래서 read => execve는 포기하고, mov [rdi], rax를 이용해서 /bin/sh를 쓰고, 쉘을 땄다.

Pwnable ·

Fastbin duplicate without unsorted bin

제목 그대로 unsorted bin 을 통해서 하는 libc leak 없이 진행될수 있는 fastbin duplicate다. 간단하게 got에도 libc 주소가 0x7f~~꼴로 들어가니까 이걸 써서 할수도 있는데, 지금 해볼건 조금 다른거다. 다음같은 조건이 있을경우 써먹을 수 있다. 1. bss영역에 heap pointer가 존재할것.2. view메뉴가 있을것 ( 상황에 따라 생략 가능 )3. bss에 stdin, stdout 중 하나가 있을것4. Heap edit가 가능할것 이 4가지만 있으면 간단하게 fastbin duplicate가 가능하다. bss에는 보통 stdin, stdout이 있는데, 이건 libc영역에 존재하는것이라, 0x7f~~꼴의 주소를 가지게 된다. 이를 이용해서 이부분에 fake..

Pwnable/Heap ·

strncmp

왜인지는 모르겠는데 비교중에 비교값이 맞으면 rdx에 값을 세팅해주는거 같다. 혹시라도 pop rdx없으면 이거라도 써먹자ㅠㅠ

Pwnable ·

61byte reverse shellcode

특정 문제에서 쓸려고 원래 reverse shellcode 에서 어떻게든 줄여봤다,,, 문제는 더 줄이던가 다른방법을 찾아봐야 한다는것,,,

Pwnable ·

Freed Realloc

만약 Free된 청크를 Realloc 시킨다면 어떻게 될까. 만약 저장되는 bin 이 바뀐다면, realloc 시 DFB가 터지게 된다. 하지만, 이런코드에서는 다음같이, Free된 같은 주소를 받아낼 수 있다. 이말은 Fastbin일경우 Free된 fd를 control이 가능하단 얘기이다 (grin)~

Pwnable/Heap ·

[Sunshine CTF 2018] Hexalicious

menu_input 함수에서

Pwnable ·