목록Hack (231)
CIDY
포너블중에 가장 쉬운 문제였다. 다른 거는 뭐가 쉬운지 모르겠어서 솔브 나오면 풀랬는데 거의 모든 문제가 한참동안 0솔이어서 다른 거 잡다가 관뒀다.. 나중에 보니 Shell이 그나마 할만해 보였던 것 같은데 해볼 걸 그랬나 ㅠㅠ //gcc -o chall chall.c -no-pie -z relro -O2 -fno-stack-protector#include #include #include #include uint32_t random_list[10] = {0,};uint64_t total_random = 0;void banner(){ printf(" __ _ _ \n"); ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
flash memory 일단 열어보면 가장 먼저 요 작업을 수행하는데, gdb에서 vmmap한 것 같은거(/proc/self/maps)를 한 줄씩 읽어오는거다. 그 중에서도 write권한이 있으며, heap, stack이 아닌 애들 주소를 xorxor함수에 돌려서 암호화해서 출력을 해 준다. 그리고 49c0에 배열로 길이 쭉 저장해놓고, 4940에 주소 쭉 저장해둔다. 그리고 addrs_48c0에는 진짜 주소들을 저장해둔다. write권한이 있는 쪽에 memcpy하기 때문에 주소만 다를 뿐 내부 값은 거의 다 가지고 있다. xorxor함수는 위와 같이 생겼는데, 주소 총 8바이트를 또 각 1비트씩 1인가 0인가 판단하면서 0혹은 0xedb88320을 xor하는데, 이게 내 머리로는 도저히 역연산을 짤 수..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.