본문 바로가기

해킹-보안

Fiddler Customize Rules

반응형

 


  • Ctrl + R ( Fiddler ScriptEditor )
  • 룰셋 창 Go 메뉴에서 to OnBefore 선택 시 해당 클래스로 이동
  • 사용 가능 클래스와 메서드는 룰셋 창 우측의 클래스 뷰에서 확인
  • https://www.fiddlerbook.com/fiddler/dev/scriptsamples.asp


ி OnBeforeRequest

  • 서버로 요청하기 이전에 호출되는 함수
  • 요청 파라미터를 조작하여 서버에 다른 값을 요청
  • 기본 룰보다 먼저 적용 되도록 함수명 바로 아래부터 작성

파라미터 변조

// 파라미터 변조 함수 정의
static function ReplaceQueryParameter(rq:String, sName: String, sValue: String)
{
        var re = new RegExp( "(" + sName + "=)(([^&]*)|$)");
        return rq.replace(re, sValue == null ? "" : "$1" + sValue);
}
       
static function GetQueryParameter(rq:String, sName: String)
{
        var re = new RegExp( "(" + sName + "=)(([^&]*)|$)");
        return sName == null ? "" : rq.match(re)[2];
}
static function OnBeforeRequest(oSession: Session) {
...
var strBody = oSession.GetRequestBodyAsString();
var param1 = "test1234";
strBody = ReplaceQueryParameter(strBody, "id", param1);
// strBody = ReplaceQueryParameter(strBody, "couponAmt",
Number(GetQueryParameter(strBody, "totalAmt")) - Number(price));
oSession.utilSetRequestBody(strBody);
...
}
 

특정 패킷 드랍

oSession.url = oSession.url.Replace("test.com/api/socket","127.0.0.1");
 

쿠키 설정

 if ( oSession.uriContains("naver") ) { oSession.oRequest["Cookie_Name"] = "cookie_value"; }


도메인 요청 제외

 if (!oSession.HostnameIs("domainIcareabout.com")) { oSession ["ui-hide"] = "domain"; }


메시지박스에 HTTP POST 본문 표시

 var oBodyString = System.Text.Encoding.UTF8.GetString(oSession.requestBodyBytes); if (oBodyString.Length > 0) FiddlerObject.alert(oBodyString);


HTTP POST를 일시 중지하여 직접 수정

 if (oSession.HTTPMethodIs ( "POST")) { oSession [ "x-breakrequest"] = "breaking for POST"; }


요청 헤더 추가

 oSession.oRequest[ "NewHeaderName"] = "new_header";


.CSS 요청 거부

 if (oSession.uriContains(".css")){ oSession["ui-color"]="orange"; oSession["ui-bold"]="true"; oSession.oRequest.FailSession(404, "Blocked", "Fiddler blocked CSS file"); }
 

.캐시 삭제

 var m_DisableCaching: boolean = false; -------> var m_DisableCaching: boolean = true;
 
 

ி OnBeforeResponse

  • 서버로부터 응답받은 데이터를 프로그램에 전달하기 이전에 호출되는 함수

HTML 응답 변경

 if (oSession.HostnameIs( "www.bayden.com") && 
 oSession.oResponse.headers.ExistsAndContains ( "Content-Type", "text / html")) 
 { 
 
 oSession.utilDecodeResponse(); 
 oSession.utilReplaceInResponse( '<b>', '<u>'); 
 // oSession.utilReplaceInResponse( 'debugger;', ''); 
 
 // 그 외 문자열 치환 함수 utilReplaceRegexInResponse(), utilReplaceOnceInReponse()


자바스크립트가 포함된 응답을 일시중지 후 수정하기

 if (oSession.oResponse.headers.ExistsAndContains ( "Content-Type", "javascript")) { oSession [ "x-breakresponse"] = "reason is JScript"; }


404 페이지 숨김 처리

 if (oSession.responseCode == 404) { oSession.oFlags.Remove ( "ui-hide"); }


이미지 반환이 완료된 응답 숨기기

 if (oSession.oResponse.headers.ExistsAndContains ( "Content-Type", "image /")) { oSession [ "ui-hide"] = "hidding images"; }








반응형

'해킹-보안' 카테고리의 다른 글

nmap 포트스캔  (0) 2021.05.06
웹 보안 헤더 종류  (0) 2021.04.29
xss-game level6  (0) 2021.04.06
CSP(Content-Security-Policy)  (0) 2021.03.19
XSS CheatSheet  (3) 2021.03.11