반응형
- 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 |