분류 전체보기
-
Stack7 풀이System hacking training/Protostar 2019. 4. 11. 01:50
#include #include #include #include char *getpath() { char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xb0000000) == 0xb0000000) { printf("bzzzt (%p) ", ret); _exit(1); } printf("got path %s ", buffer); return strdup(buffer); } int main(int argc, char **argv) { getpath(); } Stack의 마지막 문제 풀이를 해봤습니다. 이 문제의..
-
CBM CTF 2019 write upCTF Write-Up 2019. 4. 10. 01:10
첫번째 pwn1번 문제다. 64bit 바이너리, NX와 PIE가 걸려있고 readme 파일을 읽었을 때 remote로 접속해서 쉘을 따야한다. buf에 getnumber의 return값과 같은 값을 넣어야하는데 get number()로 가보면 다음과 같이 고정적인 값을 return 해준다. 따라서 input값을 넣어주면 끝 %d로 입력받으니까 10진수로 넣어줘하는 것만 생각해주면 된다. 다음으로 푼 문제다. 64bit 바이너리, 역시 remote 익스해야한다. mitigation은 NX, PIE가 걸려있다. 헥스레이로 디컴파일 결과 print_flag()가 있고 이 함수가 호출되면 flag가 출력된다. 이 함수가 호출되기 위한 조건을 보면 v4 + v5의 값이 152보다 작거나 같아야하는데 첫번째 if문..
-
[Toddler's Bottle] leg write upSystem hacking training/pwnable.kr 2019. 1. 28. 17:22
arm에 관한 문제를 풀어봤습니다. Daddy told me I should study arm. But I prefer to study my leg! Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ssh leg@pwnable.kr -p2222 (pw:guest) 이 문제는 arm 어셈블리언어를 알아야 풀 수 있습니다. 주어진 두 링크를 들어가보면 C코드와 어셈블리 코드가 주어집니다. 여기서 저는 어셈블리 코드로 분석을 진행했는데요. #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push {r6}\n" "add r6, pc, $1\..
-
What is Operating System?Linux Kernel/Basic 2019. 1. 16. 12:55
OS(Operating System)이란? 매우 복잡한 소프트웨어이다. 운영체제는 일반적으로 자원 관리자(Resource manager)라고 정의된다. CPU, 메모리, 디스크 등이 이 자원에 해당한다. 사용자가 C 프로그램을 작성하고, 컴파일하여, 생성된 바이너리를 실행할 때 OS가 어떻게 동작하는지 살펴보자. [원시 OS의 형태] 그림은 OS의 기본적인 형태이다. 앞서 설명했듯이 OS는 자원에 해당하는 CPU, Disk, Memory등을 관리한다. # 1. 사용자가 C코드를 작성했을 때 점선을 기준으로 위는 사용자 수준의 동작이고, 아래는 커널 수준의 동작으로 봐도 무관하다. # 2. 해당 C 파일을 저장했을 때 test.c를 저장하는 사용자의 요청은 운영체제에 전달이 되고, 운영체제는 비휘발성 저장..
-
Evil Twin Attack with Raspberry Pi 3tmp/Tip 2019. 1. 14. 20:29
Ubuntu root password sudo passwd root 라즈베리파이 무선랜 연결 sudo iwlist wlan0 scan // 접속할 WiFi의 SSID 이름 확인 sudo wpa_passphrase [SSID] [AP's PW] // WiFi 접속하기 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf //아까 출력된 내용 복붙 reboot //재부팅 Ref : https://hongku.tistory.com/103 apt error rm /var/lib/dpkg/lock apt-get update error rm /etc/apt/lists/lock Ref : https://www.hahwul.com/2016/08/debian-apt-get-could-..
-
-
heap2 풀이System hacking training/Protostar 2018. 12. 22. 22:30
[heap2.c] heap2는 heap overflow, use after free를 이용한 문제인것 같다. 코드상에 auth chunk의 데이터가 들어가는 주소를 출력해주는 부분이 있는데, 이를 이용해서 쉽게 "you have logged in already!"라는 문구를 띄울 수 있다. 처음 "auth "를 입력하면 auth구조체의 크기 만큼 malloc을 해주는데 이 위치가 0x804c008이다. 이후 service를 입력하면 0x804c018의 위치에 메모리를 할당 받고, string을 복사해주는데, 이는 strdup()의 특성이다. strdup()는 malloc() + strcpy()인데, malloc()을 호출하여 string의 사본에 대한 기억장치 공간을 예약한다. 예를 들어 strdup("..