본문 바로가기

pwnable44

[Pwnable.kr] (Pwnable) brain fuck 풀이 int main(void) { size_t sVar1; int in_GS_OFFSET; int i; char s [1024]; int local_14; local_14 = *(int *)(in_GS_OFFSET + 0x14); setvbuf(stdout,(char *)0x0,2,0); setvbuf(stdin,(char *)0x0,1,0); p = &tape; puts("welcome to brainfuck testing system!!"); puts("type some brainfuck instructions except [ ]"); memset(local_414,0,0x400); fgets(local_414,0x400,stdin); i = 0; while( true ) { len = strlen(s).. 2020. 4. 28.
[HackCTF] (Pwnable) RTL_World 풀이 문제 바이너리파일입니다 system armor 과 shell sword 가 있으면 Binary Boss 를 죽일수 있다하네요. Binary boss 의 정보입니다. 32비트 리틀엔디언이고, ASLR 밖에 설정되어있지않습니다. 메모리주소가 주어져있네요. 어떤주소인지 차차 확인해봅시다. 2번 Get Money 입니다. Farming, Item selling, Hunting 은 각각 100, 350, 500 씩 벌 수 있습니다. 2번을 눌렀을때, Get_money함수를 호출하는데, Get_money 에 4번을 누르면 rand() 값만큼 돈으로줍니다. 이걸로 system armor 과 shell sword 를 사서 system, shell 의 주소를 얻을수 있습니다. gdb-peda$ x/x 0xf7e14200.. 2020. 4. 27.
[HackCTF] (Pwnable) Yes or no 풀이 문제파일을 다운로드하면, 실행파일과 libc-2.27.so 파일을 준다. 문제서버에서 사용하는 라이브러리다. 메인함수는, 입력한숫자를 문자열화해서, (어떠한값) 이랑 비교해서 맞을때 gets 함수로 입력을 받아 overflow 가 일어나게된다. fgets 로 문자열을 입력받을때는 overflow 가 발생하지않으므로, (어떠한값) 을 입력해서 gets 함수로 overflow 해야겠다. main+237 에 BP 를 걸고 실행하면, (어떠한값) 을 구할수있다. 0x960000 10진수로 9830400 이니 입력하면, overflow 를 할수있게된다. NX 가 활성화되어있으므로, 스택에 쉘코드를 올려 실행할 수 없다. 그렇다면, 함수주소를 leak 해서 system함수를 실행해보자. 1. puts 의 plt 주.. 2020. 4. 27.
[HackCTF] (Pwnable) BOF_PIE 풀이 3008 포트로 접속하면 뜬다. 주소를 알려주고 입력을 받는다 [ main ] welcome 함수호출 후, Nah 를 출력하고 종료한다. [ welcome ] do you know j0n9hyun ? 을 출력하고, welcome 함수의 주소를 출력해주고, [ebp-0x12] 에 값을 입력받는다. NX 와 PIE 가 설정되어있다. stack 이나 heap 에 쉘코드를 올려 실행할수없고, 절대주소를 사용할 수 없다. flag 를 출력해주는 j0n9hyun 함수이다. 절대주소를 사용할 수 없으니, welcome 함수와 j0n9hyun 함수의 offset 차이를 구해서, j0n9hyun 함수의 주소를 구한뒤, BOF 로 ret 주소를 j0n9hyun 함수의 주소로 조작하면 되겠다. 두 주소의 차이 = welco.. 2020. 3. 25.