본문 바로가기

[ ★ ]Study/War Game29

[Rookiss] pwnable.kr dragon 군대에 있다보니 사진을 올리기에는 벅차다. 귀찮기도 하고 정상적인 방법으로는 죽일 수 없다. 어떻게든 해보고 싶었는데(...?) 안된다.뭐 pwnable 이다 보니 정상적으로 죽일 수 있게 하는게 더 이상한가 싶다. Solution IDA나 gdb로 살펴보면 Baby, Mama의 드래곤 HP는 BYTE로 표현되는 것을 볼 수 있다. BYTE의 표현 단위는 0~127이다. Baby 드래곤의 데미지는 30으로 정상적으로 죽일 수 없고, 오버플로우 일으킬 수도 없다. 때문에 Mama를 보면 데미지는 10이다. Priest 랑 Knight를 비교했을 때 Knight도 승산이 없다. 물론 오버플로우 일으킬 수 도 없다. 떄문에 Priest를 보면 3번과 2번을 번갈아 해주면 Mama의 체력이 127을 넘어가서 이.. 2018. 11. 16.
[Rookiss] pwnable.kr brain fuck(풀이중) 1. 는 포인터를 옮기고2. - + 포인터가 가리키는 값을 바꾸고3. putchar랑 getchar는 BYTE 단위로 result에 대입한다 2018. 11. 5.
[Rookiss] pwnable.kr simple login 요약 1. 같은 값을 입력하지만 hash 값이 계속 바뀐다.- main 에서 auth를 호출하는데 이 auth 함수를 볼 필요가 없다고 느껴짐 2. Base64Decode하고 12글자 입력 받는데 왜 segment fault 뜬다.- coredump로 값을 확인해봄 ( AAAABBBBCCCC를 Base64Encode한 값 ) CCCC 부분에서 ebp 변조 확인 3. GDB로 correct 함수보니 DEADBEEF 를 비교함 ( 갑자기 ? )- 변수 값을 확인하니 전역변수 값을 가져오는 것을 확인 가능함 4. 전역변수 주소 값이 바뀌지 않음 5. 생각한 페이로드는 leave; ret; 생각하면 CCCC 값을 가져오는 것 하나 확인 input 변수 주소 값 변하지 않는 것 correct함수에서 굳이 DEAD.. 2018. 11. 2.
[Rookiss] pwnable.kr fsb 생각한 로직1. main ebp leak해서 puts_GOT 쓰자2. 가르키는 공간에 execve 넣어서 실행하자=> main ebp가 가리키는 곳이 너무 멀다 다시 생각한 로직1. 스택 내의 서로 최소한의 거리를 두는 곳을 찾자.2. 그 곳을 puts_GOT 하고3. 가르키는 곳에 execve 하자 ps. %hn 쓰는 법 좀 공부해야되는데FSB 좀 더 공부가 필요한 걸 @_@ 공부하면서 알게 된 tip ..? %100%10$n %numc%n$n%x%x%x/%c%c ... 를 간략히해서 사용가능 @ 2018. 10. 9.
[Toddler's Bottle] pwnable.kr blukat 귀여운 이미지의 새로운 문제가 추가되었다. 숙련된 플레이어가 아니라면 금방 풀 수 있다.... 난 금방 풀 것 같았다(숙련된 포너가 되고싶다)아무튼 풀기전에 생각한 것은가벼운 코드 장난이 있을 것이다. 라고 생각했다 #include #include #include #include char flag[100]; char password[100]; char* key = "3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+"; void calc_flag(char* s){ int i; for(i=0; i 2018. 8. 13.
[Toddler's Bottle] pwnable.kr coin1 import time from pwn import * HOST = 'pwnable.kr' PORT = 9007 conn = remote(HOST, PORT) time.sleep(3) #coin print conn.recv() for i in range(0,100): conn.recvuntil('N=') n = int(conn.recvuntil(' ')) conn.recvuntil('C=') c = int(conn.recv()) print n, c start = 0 end = n msg = "" while(start 2018. 8. 12.