7번 orge 문제입니다. 이건 4번 문제 orc 와 같은 문제이지만 조건이 or 와 and 문자열을 넣을 수 없습니다. 그렇기 때문에 || 연산자처럼 and 대신에 '&&' 입력하였지만 get request 에서는 쿼리의 구분자로 사용되기 때문에 제대로 전달이 되지 않습니다. 예로 아래와 같이 입력하고 응답쿼리를 보면 && 이후는 다른 key의 쿼리요청으로 인식해서 짤립니다. https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=%27||length(pw)=%278%27&&id=%27admin 해결하기 위해서는 이것또한 && 대신에 %26%26 hex 코드로 전달을 하면 됩니다. 매크로를 통해 얻은 암호로 최종적으로 풀리네요.
4번째 문제이다. 문제 1,2 번 처럼 pw 의 조건을 무력화 시킨다. 진짜 문제는 pw 의 값을 찾아내야하는 blind injection 이다. 그러기 위해서는 pw 길이를 찾고 모든 문자열을 대입해서 비밀번호를 찾아야 한다. 사용하는 함수는 length 와 substr 이다. length 로 먼저 암호의 길이를 찾아야 한다. 길이가 4와 8 모두 통과를 한다. 그말은 암호 길이가 4인 레코드와 8인 레코드가 모두 존재한다는 것이다. 그럼 admin 의 암호 길이는?? length 함수 옆에 조건 id=admin 을 붙여준다. 그리고 암호를 대입하는 것은 아래의 블로그에 도움을 받았다. 매크로 코드도 있어서 python으로 돌려보면 암호도 쉽게 찾을 수 있다. 여기에서 암호를 찾을 때 ascii 값으로..
no query 의 조건을 or 로 무력화시키면 guest 의 레코드를 얻을 수 있다. 하지만, 문제의 조건은 guest의 계정이 아닌 admin 계정을 얻어야 한다. 그래서 이전 문제와 같이 no=10 or id='admin' 을 입력하였지만, preg_match 에서 싱글쿼드, 더블쿼트가 모두 필터링 되어 결국엔 'No Quotes ~_~' 메시지만 얻게 된다. 이걸 해결하기 위해 문자열을 string 에서 hex 코드로 변경하여 입력하면 해결 된다.
1. 개요 대부분의 프로젝트는 혼자서 만든 Application 프로젝트만 사용하는 것이 아니라 외부 참조를 사용하는 경우가 많다. 이 것이 .Net 프로젝트만 사용하면 모르겠지만 C++ native dll 파일을 참조하는 경우에는 더욱더 Platform Target 설정에 어려움을 겪을 때가 있다. 이런 상황들에 대해서 정리를 한다. 2. .Net Platform Traget 의 종류 .Net 프로젝트의 경우 Build 옵션을 보면 Platform Target을 지정하는 것이 있다. 이는 해당 프로젝트가 어떤 운영체에서 사용되기 위한 것인지를 지정하는 것이다. x86과 x64의 경우는 설정이 매우 명확하다. 하지만 Any CPU?? 이것이 바로 궁금한 내용이다. 프로그램을 개발할 때에 모든 운영체제를 ..
1. CSP 란? CSP 는 외부의 스크립트 공격인 (XSS)로부터 보호하기 위한 정책이다. CSP를 설정하면 지정된 origin이 아닌 다른 경로를 통해서 들어오는 입력을 방지할 수 있다. 각 source에 대해 지정하는 parameter가 쉽게 정리되어 있는 블로그를 참조하자. CSP란 (velog.io) CSP란 먼저 CSP란 (Content Security Policy)의 약자로, 웹 브라우저에서 각종 XSS공격을 막기위해 만들어진 정책으로, 아무나 인라인 자바스크립트나 CSS를 입력할 수 없도록한다. unsafe-inline은 그냥 다 허용하 velog.io 2. NodeJs server-side CSP 설정하기 node js의 helmet을 사용하게 되면 CSP를 지정하게 되는데, 그냥 use..
1. 프로젝트 시작 NodeJS의 root 경로를 지정하고 필요한 모듈을 설치한다. # npm 설정 npm init # module 설치 (express, helmet, ejs) npm install express helmet ejs 2. 폴더 구조 기본 폴더 구조는 아래와 같다. app.js 파일 const express = require('express') const helmet = require('helmet') const ejs = require('ejs') const app = express(); app.set('view engine','ejs') // view을 보여주는 engine을 명시함 app.set('views', './views') // view 의 위치를 알려줌 app.use('/p..