0x2 Python Tutorials - Reverse Shell
·
primalsecurity.net/Python Tutorials
* PC 환경에서 사진 끝부분이 잘릴 경우 사진을 클릭하면 원본 사이즈로 볼 수 있음 이번 포스팅에서는 파이썬을 이용해서 리버스 쉘을 생성하는 것을 보여줄 것이다. 우선 웹서버를 이용하여 파일을 다른 호스트로 전송하는 것는 것부터 보여줄것이다. 예를 들어 해킹 가능성이 있는 목표 시스템(이하 Victim)에 raw shell이 존재하는데 좀 더 다양한 명령어를 수행하기 위해 해당 쉘을 파이썬 리버스 쉘이나 미터프리터 바이너리를 통해 이용하길 원한다고 가정한다. 따라서 우선 리버스 쉘 명령을 수행할 파일을 전송하기 위해 웹 서버를 생성해야 하는데, 파이썬에서는 간단한 명령어 한 줄로 웹 서버를 생성할 수 있다. 파이썬 HTTP 서버를 생성하기 위해서는 "SimpleHTTPServer" 내장 함수를 이용하면..
0x1 Python Tutorials - Port Scanner
·
primalsecurity.net/Python Tutorials
이번 포스팅에서는 파이썬을 이용하여 기본적인 포트 스캐너를 만드는 것을 통하여 파이썬에서 어떻게 네트워크 연결을 하는지 보여 줄 것이다. IP 주소와 포트번호를 기반으로 지속적으로 네트워크 소켓 연결을 생성할 것이다. 이런 작업을 수행하기 위해 "반복문" 이라는 새로운 컨셉을 보여줄 것이다. 위 사진의 루프 코드에서 약간의 들여쓰기가 된 것을 주의해야 한다. 보통 프로그래머들은 들여쓰기를 탭이나 공백 2개를 (스페이스 2번) 이용한다. 한 스크립트 내에서 지속적으로 하나만 사용할 경우에는 어떤걸 사용하던 상관 없다. 간단한 포트 스캐너를 만들기 위해 위 코드에서 사용된 "print" 대신에 소켓 연결을 생성하는 코드로 대신 할 것이다. 아래 사진의 코드는 내장된 "socket" 모듈을 이용해서 어떻게 소..
0x0 Python Tutorials - Getting Started pt2
·
primalsecurity.net/Python Tutorials
이전 포스팅에 이어 이번 튜토리얼에서도 파이썬의 기본적인 컨셉을 보여줄 것이다. 파이썬 코드를 함수,클래스,"sys" 모듈을 이용하여 작성할 것이다. 파이썬 기본(뼈대) 스크립트 아래 사진은 파이썬 스크립트를 실행시키는 기본적인 코드이다. 운영체제에게 "#!/usr/bin/python"을 이용하여 어떤 인터프리터를 사용할지 알려준다. 그 다음 "def main():"을 이용하여 main 함수를 정의한다. 그리고 마지막 2개의 라인은 "main()" 함수를 처음 실행하게 해주는 코드이다. 당신은 코드의 가독성과 수정을 용이하게 만들기 위해 스크립트 파일 내에 다른 함수를 추가적으로 정의할 수 있다. 함수 함수의 영향력을 높이는(잘 사용하기 위한) 일반적인 방법은 어떤 액션을 수행하고 결과를 리턴하는 코드를..
0x0 Python Tutorials - Getting Started pt1
·
primalsecurity.net/Python Tutorials
이번 포스팅은 파이썬과 프로그래밍을 처음 접하는 사람을 위한 "primalsecurity.net - Python tutorial" 시리즈의 첫 번째 글이다.파이썬은 수많은 정보 보호 커뮤니티에서 지원하는 매우 강력한 스크립트 언어이다. 여기서 "지원"이라고 하는 것은 많은 프로그램들이 파이썬으로 코딩 된다는 것과 파이썬 스크립트에서 많은 모듈을 지원한다는 것을 의미한다. 모듈은 특정 작업을 몇 라인 안되는 코드로 짤 수 있도록 다양한 기능을 제공한다. 이번 포스팅은 파이썬 2.x 버전과 리눅스를 사용한다는 가정하에 작성되었다. 파이썬 코드를 작성할 때에는 "파이썬 인터프리터"를 통해 직접 작성할 수도 있고 파일 안에 코드를 작성하여 실행할 수 있다. 대부분의 경우 코드를 직접 인터프리터에 작성하고 파일로..
Manual Unpack (매뉴얼 언팩) - ESP Trick
·
Reversing/이것 저것
원본 링크 : http://www.websense.com/securitylabs/blog/blog.php?BlogID=176 그런데 링크가 죽었다...ㅠㅠ 악성코드 제작자들은 자신들의 바이너리(악성코드) 파일이 자동으로 언패킹 되는 것을 막기 위해 대부분 커스텀 패커나 프로텍터를 사용한다. 이는 안티바이러스의 탐지 기법 중 행위 분석을 위해 사용되는 시그니처가 생성되는것을 지연시킨다. "Scramblers" 라고 불리는 도구들은 시그니처 기반의 안티 바이러스 탐지 기법을 우회 하기 위해 패킹된 바이너리를 파일을 변조하는 목적으로 개발되었다. "MSLRH" 이라는 공개된 프로텍터는 바이너리 파일을 압축 할 뿐만 아니라 안티 디버그, 안티 덤프, "stolen-byte" 등의 기법까지 사용하면서 리버싱을 꽤..
Webhacking.kr 61번
·
Webhacking.kr
GET 메소드로 전송되는 id 파라미터 값이 없을경우(사용자가 입력하지 않을 경우) 자동으로 "guest"로 세팅한다. 그리고 함수 필터링과 길이를 제한한다. $q 변수에는 id 변수를 포함하는 쿼리의 실행 결과가 저장되는데, 실행 결과에서 리턴되는 id 값이 "admin" 일때만 문제가 풀린다. "id=id" 입력 시 실행되는 쿼리는 다음과 같다. - SELECT id FROM c_61 order by id desc limit 1 - c-61 테이블에서 id 컬럼을 기준으로 첫 번째 데이터를(zombie) 출력한다 id="admin" as id 입력 시 실행되는 쿼리는 다음과 같다. - SELECT "admin" as id FROM c_61 order by id desc limit 1 - 위 쿼리에서 ..
Webhacking.kr 60번
·
Webhacking.kr
페이지 소스는 위 사진과 같다. 1. 일단 쿠키 값에 숫자가 들어가면 안된다. 2. GET 메소드로 전송되는 "mode" 파라미터 값이 "auth"여야 한다. 3. readme 디렉토리에서 자신의 "id.txt" 파일을 불러 f 변수에 저장한다. 4. f 변수에 저장된 파일 내용을 result 변수에 저장한다. 5. result 변수에 자신의 id가 포함되면 성공이다. 6. readme 디레곹리에 자신의 "id.txt" 파일을 생성한다. 7. 생성한 파일에 자신의 id를 입력한다. 9. 접속 ip가 "127.0.0.1"이 아니면 생성한 자신의 "id.txt" 파일을 삭제한다. 파일이 있어야 하는데 삭제된다... 즉 레이스 컨디션 공격이다. 따라서 2개의 서로 다른 세션으로 로그인하여 1. "index.p..
Webhacking.kr 59번
·
Webhacking.kr
(LOGIN Form 제출 클릭 시) POST 메소드로 전송되는 id, lv 파라미터 값을 쿼리문에 포함하여 c59 테이블에서 id,lv 컬럼 값을 조회한다. 조회한 id가 존재하는 경우 id,lv 컬럼 값을 출력한다. 그리고 lv 컬럼 값이 "admin" 인 경우 문제가 풀린다. (JOIN Form 제출 클릭 시) phone 파라미터 값의 길이가 20글자 이상이면 오류가 발생한다. id 파라미터의 값이 "admin"인 경우 오류가 발생한다. phone 파라미터 값 내에 "admin, 0x, #, hex" 등 magic_quotes_gpc 우회해 사용되는 함수가 존재하는 경우 오류가 발생한다. 인젝션 포인트는 바로 INSERT 쿼리에서 사용되는 $phone 변수이다. 특히 $phone 변수 앞, 뒤쪽에 ..
Webhacking.kr 58번
·
Webhacking.kr
플래시 파일이 보여진다. 페이지 소스를 보면 해당 플래시 파일은 메인 페이지와 동일한 디렉토리에 존재하는 "hackme.swf"를 의미한다. 플래시 파일은 디컴파일이 되긴 하지만 간단하게 "strings" 명령을 이용해서 해당 플래시 파일 안에 존재하는 모든 문자열을 추출한다.
Webhacking.kr 57번
·
Webhacking.kr
문제 페이지 초기 화면이다. "index.phps" 페이지로 이동하여 소스를 분석하면 아래와 같다. 1. 문제 페이지에서 올바른 키를 입력하면 문제 클리어 2. "from,union,select" 등 함수 필터링 3. 사용자의 ID, 입력한 msg 값, 비밀번호, 입력한 se 값을 "challenge57msg" 테이블의 각 "id,msg,pw,op" 컬럼에 저장한다. * insert 문으로 데이터 삽입 시 se 변수에서 취약점 발생 * 저장된 값을 출력해주는 구문이 없기 때문에 time based blind injection을 해야 함