목록UNITY (6)
total_activ
1.babymath일단 보면 300문제를 1시간안에 풀어야하는 문제이기에 nc 접속이지만 저번에 배운 pwn을 이용하여 파이썬 코드를 구상하면 될것같았다. 저번 과제와 비슷한 맥락이지만 다른점은 산술연산 기호가 무작위로 바뀐다는점이다. 이게 생각보다 까다로웠던게 원래는 해당 산술 전까지 해서 앞숫자를 받고 =까지 해서 뒷숫자를 받는 식으로 진행했다면 이제는 300]까지 읽고 다음 2바이트를 저장한뒤 한 빈칸만큼 읽고 한 빈칸전까지 읽어 저장한뒤 =기호 뒤까지 숫자를 받아와야했다. 일단 나는 여러 방식으로 생각해봤지만 이게 맞지 않을까 싶었다. 근데 여기서 의아한 점은 recvuntil을 하면 읽었던 문자들은 다시는 불어올수없는건가였다.. 아직도 의문이지만 구글링에서 답이 나오지 않아 일단 코드를 구상했다..
1. pwntools 사용법 문서화from pwn import * : pwntools를 사용하려면 pwn 모듈을 import시켜야함r = process("파일이름") : 프로세스 클래스의 인스턴스를 만드는것임r.send("문자열") : 문자열을 stdin에 넣음r.sendline("문자열") : 문자열에 \n을 포함해서 stdin에 넣음 r.recv(정수형숫자) : stdout에서 해당 숫자 바이트의 문자열을 읽어와 반환r.recvline() : stdout에서 한줄 문자열 읽음r.interative() : 유저가 직접 화면에 입출력할수 있게 해줌 2. pwntools 실습 문제 풀이 문서화첫번째 숫자에 접근하기 위해서 바로 앞에 있는 .까지 읽어야하기 때문에 recvuntil()함수를 이용했고p.rec..
이전에 확인했던 코드들을 봤을때 scanf()라는 취약한 함수를 사용하고 있었고 void get_shell()로 cmd창을 불러오는 이름바 interactive()느낌의 코드함수도 존재했ㄷ. 즉, buf[0x28]에 해당하는 장소에 scanf를 통해 입력값을 넣은 뒤 오버플로우를 시켜서 return address 장소에 해당 get_shell()함수의 주소를 불러와 실행하게 해야한다. init()함수는 단순한 초기화 함수로 필요가 없다. 그렇기 때문에 위에 사진에서 보면 알다싶이 get_shell 주소를 찾았다. 지금 다시 위 코드를 보면 rsp를 0x30만큼 늘리고 sef는 0x8만큼의 크기를 가진다. 간단하게 입력값 두개를 받고 sub 함수를 통해 계산된 그 결과 값이 동일하며 correct 아니면..
Closure function - 함수와 해당 함수가 가지고 있는 데이터를 함께 복사, 저장해서 별도 함수로 활용하는 기법으로 First-class 함수와 동일 def outer_function(num): def inner_func(); print (num) return '안녕' return inner_func closure_func = outer_func(10)
프레임워크는 풀스택프레임워크와 마이크로 프레임워크로 나뉜다. - 풀스택: 프레임워크 내에서 웹서비스를 만드는데 필요한 기능을 제공하는 프레임워크 - 마이크로: 핵심적인 기능만 제공하고 외의 것들은 다른 라이브러리나 만들수 있도록 한다. 대표적인 프레임워크: JAVA Spring, Python Django, Ruby on Rails(옛날 것) - 제공하는 기능: 요청 /응답 추상화, 세션 상태 관리, URL 매핑 등 - 이미 만들어진 것이기 때문에 학습곡선이 커서 다른 분야나 프로젝트에 활용하기 어렵다 Flask 특징 - 마이크로 프레임워크 기반 - 핵심 기능만 제공 - 나머지는 만들거나 라이브러리로 가져와야함 Jupyter내에서 flask 다운받는법 - !pip install flask from flas..
client 컴퓨터: 웹페이지를 보는 컴퓨터 client --> HTTP Request --> 웹서버(web server) --> [프론트엔드(frontend)] + [백엔드(backend) 데이터베이스] --> 웹서버 --> HTTP Response 1. 웹서버(web server) --> 백엔드(backend) 데이터베이스 - 백엔드: 실시간 정보를 만들어주는 로직을 담당 >> 웹페이지 틀에 정보 삽입 - 데이터 베이스 : 해당 로직을 만들때 데이터를 저장하고 처리하는 곳 2. 웹서버(web server) --> 프론트엔드(frontend) - 프론트엔드: 웹페이지의 틀, 최종적으로 웹서버에 전달 이후 사용자에게 전달 웹서비스의 역사&개발 1세대: USER --- IMTERMET --- WEB SER..