https://www.hashkiller.co.uk/sha1-decrypter.aspx
우선 시스템 콜(system call)이 뭔지부터 알아보자면 커널안에 구현되어있는 API로 FILE I/O, SOCKET, read, write, printf, scanf와 같은 POSIX C 함수들 모두 다, 즉 OS에서 제공하는 기본적인 기능들이 시스템 콜로 구현되어 있다. 일반적인 rop가 인자 세팅해주고 마지막에 함수 call 해서 하는 것이라면 srop는 eax(64bit 이면 rax)에 해당 함수의 시스콜 넘버를 주고, rop에서 인자 세팅 해주는것 처럼 세팅해 주고 int 0x80으로 콜 해주면 된다. 근데 가젯이 없을 수도 있거나 찾고싶은 인스트럭션이 있는데 다른 인스트럭션도 딸려나오는 경우가 있다. 보통 syscall rop는 스태틱 컴파일 돼있을 때, got, plt 가 없어서 rop를..
실행파일을 실행하면 이렇게 됩니다. Ollydbg로 디버깅 해보겠습니다. 이 부분은 문자열을 MessageBOX() 에 넘겨주는 부분입니다.저기 MB_OK는 MessageBOX() 창에서 OK 버튼 하나만 출력해 주는 거라고 합니다 잘못 캡처했는데 여기가 MessageBoxA를 호출하고, GetDriveTypeA 도 호출하는 부분입니다.여기서 리턴값(EAX)는 3(DRIVE_FIXED) 입니다 즉 EAX = 3 이거죠그리고 ESI를 MessageBoxA()에서 FFFFFF. 즉, -1로 세팅합니다 INC 는 1 증가, DEC는 1 감소 입니다.ESI와 EAX를 INC, DEC 하면서 마지막에 EAX,ESI를 비교하는데 이 두 값이 같으면 0040103D로 분기하고, 아니면 밑의 문장을 실행 합니다. 바로..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 JEONGYEON Home | MEMBER | song | 공홈 Nayeon JeongYeon Jihyo Mina Sana MoMo DaHyeon ChaeYoung Tzuyu JEONGYEON 이름 : 유정연(兪定延) / Yu Jeongyeon) 별명 : 타조 유또검, 유또막, 유깡패, 유또울, 유정선배, 걸크러쉬, 유상해씨, 노잼형 생일 : 1996.11.01 혈액형 : O형 취미 : 먹방, 동영상 보기 특기 : 핸드폰 게임 좌우명 : 인생은 선택이다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 Twice Home | MEMBER Nayeon JeongYeon Jihyo Mina Sana MoMo DaHyeon ChaeYoung Tzuyu | song OOH-AHH하게 CHEER UP TT KNOCK KNOCK SIGNAL LIKEY Heart Shaker What is Love? | 공홈 Colored by Color Scriptercs
1포인트 짜리 mistake 문제입니다. 힌트는 연산자 우선순위 입니다. 여기는 fd가 0보다 작으면 끝내버리는 부분이고, 여긴 pw_buf2 배열을 선언하고 입력 받은 후 xor 하는 부분입니다. 여기가 이제 pw_buf랑 pw_buf2를 비교해서 같으면 flag를 출력하는 부분입니다. 여기가 xor 해주는 부분인데, XORKEY가 1 이므로 넘겨받은 인자를 1 xor 함을 알 수 있습니다. 이제 대충 어떤 프로그램인지 알았으니 어디가 취약한지 보겠습니다. 이 부분들을 보면 fd에 open과 read의 반환값을 넣고 그걸 0과 비교하려고 한 것이지만, 연산자 우선순위가 비교 연산자(>,
클래스를 상속 받을 수도 있다. 이렇게 상속을 한다. 자식클래스 extends 부모 클래스 public class Sunrin(){ String barn public void print_barn(String barn){ this.barn = barn;System.out.println(barn+"이다")}}public class Jeongbo exntends Sunrin{ public static void main(String[] args){ Jeongbo lee = new Jeongbo(); lee.print_barn("13반");}} 위 코드를 보면 Jeongbo 클래스에는 barn 변수도 없고, print_barn 메소드도 없지만 상속을 통해 Jeongbo 클래스 에서도 부모 클래스인 Sunrin의 ..
생성자를 이용해서 main 메소드가 있는 클래스에서 어떤 클래스에 접근해서 변수의 값을 바꿀 수 있다. class Sunrin{ String name; } 이런 클래스가 있다고 가정하고, main 메소드에서 lee라는 객체를 하나 생성한 후 name을 lee로 바꿔주고 싶다면 생성자를 사용하면 된다 class Sunrin{ String name;public Sunrin(){}public Sunrin(int name){ this.name = name;}} public class asd { public static void main(String[] args) { Sunrin lee = new Sunrin("name"); }} 이런 코드에서 저 위에 public Sunrin(int name){ this.nam..