Thymeleaf 기본이해https://lovflag.tistory.com/27 타임리프(Thymeleaf) 템플릿 엔진 알아보기(1) - 조건문,반복문,기본 문법, 사용법타임리프 소개 타임리프는 서버에서 html을 동적으로 렌더링 할 때 사용하는 템플릿 엔진이다. 간단한 조건문(if, else), 변수표현, 각종 연산(삼항연산, 산수, 비교, 문자, 참 거짓)이 가능하다. 자lovflag.tistory.com 일반적인 SSTI일반적으로 SSTI 공격 구문은 템플릿 엔진에 따라 약간의 차이가 있다.수많은 템플릿 엔진이 존재하지만, 일반적으로, Python의 Jinja2, Java 의 thymeleaf, JS의 Lessjs 등이 존재한다. ${7*7} {{7*7}} {% 7*7 %}등으로 확인해 볼..
이해를 돕기 위해 아래에 극단적인 코드 예시를 가져왔다. app.post('/login',function(req,resp){ var id = req.body.id if (id.toLowerCase()!=='hiroo' && id.toUpperCase() === "HIROO") { res.render('alert',{contents:'hello admin!',red:'/admin'}) } } 언뜻 보기엔 말이 되지 않는 코드, 통과할 수 없는 if 문 이지만, 이는 얼마든지 우회, 통과가 가능하다. toLowerCase(), toUpperCase() 함수를 사용하여 비교구문을 작성할때, 예상치 못한 결과가 도출될 수 있음에 주의하자. Javascript(혹은 여타 언어) 의 toLowerCase(), to..
URL globbing curl 을 사용할때 다음과 같은 오류를 겪어본 적이 있을 수 있다. url: (3) [globbing] error: bad range specification after pos 30 curl: (3) bad range in URL position 30 구글링 해보면 이에 대한 해결책으로 -g 나 -globoff 옵션을 사용하라고 하는데 이는 globbing 기능을 비활성화 하는 것이다. curl 은 비슷하고도 다양한 url 을 한번에, 쉽게 지정하기 위해 globbing을 제시한다. 예약 문자 [ ] 와 { } 를 사용하며 출력변수를 지정하고, 범위를 지정할 수 있다. curl "http://example.com/section[a-z].html" curl "http://examp..
기존 PHP + Apache 를 사용해 웹서버를 사용하던 중 node 서버를 사용할 일이 생기게 되었다. express 의 포트 번호를 아파치와 분리하면 될 일 이지만, 여간 귀찮은게 아니므로 서브도메인과 프록시 설정을 통해 xxx.com 은 기존 PHP를 사용한 웹서버로, node.xxx.com 은 express 를 사용한 웹서버로 이동하게 하는 것이 목적이다. DNS CNAME 서브도메인 설정이 되어있다는 가정하에 진행하겠다. Reverse Proxy apache 경로 /etc/apache2/sites-available/ 아래에 node.xxx.com 에 대한 conf 파일을 작성해준다. http의 기본 포트는 80, express 의 포트번호는 9000으로 설정하였기 때문에, 다음과 같이 설정해준다..
Redis 에서 발생 할 수 있는 취약점을 알아보기 전에, 먼저 redis 에 대해 알아보자 Redis레디스는 In-Memory 데이터베이스모든 데이터를 메모리에 저장하고 조회 디스크 기반 저장소의 메모리는 매우 작아서, disk 기반메모리 기반 저장소(redis)메모리에 상주하고 있기 때문에 자동적으로 휘발, disk는 옵셔널함레디스는 캐쉬서버인가? ⇒ 캐시서버로 사용가능하지만 저장소임디스크보다 매우 빠르다data expire 가능(지정된 시간 이후에 만료가능)data 타입 ⇒ key-value다양한 자료구조 지원“/etc/redis/redis.conf” 레디스 설정 파일, requirepass는 패스워드를 지정 $sudo apt install redis-tools$sudo apt install r..
. PIP(파이썬 패키지 매니저)를 이용해 설치하고 $pip install requests requests 모듈을 import 하여 사용한다. import requests GET,POST 뿐만 아니라, HTTP Request 옵션 PUT, OPTIONS, HEAD, DELETE 들을 아주 간편하게 지원합니다. r = requests.get('https://exam.com') r = requests.put('https://exam.com', data={'key': 'value'}) r = requests.delete('https://exam.com/delete') r = requests.head('https://exam.com/get') r = requests.options('https://exam.com..
타임리프 소개 타임리프는 서버에서 html을 동적으로 렌더링 할 때 사용하는 템플릿 엔진이다. 간단한 조건문(if, else), 변수표현, 각종 연산(삼항연산, 산수, 비교, 문자, 참 거짓)이 가능하다. 자바에서 잘 알고있는, 브라우저가 인식 할 수 없는 태그라이브러리를 사용하는 JSP와의 가장 큰 차이점은 확장자가 .HTML이며 서버 가동 없이도 순수한 html로서 활용할 수 있다는 점 이다. 앞서 말했듯이 순수 html로 활용 할 수 있어서 쉽게 수정이 가능하다는 장점이 있다. 또한 사용법이 매우 쉬운 편이라 백엔드 개발자가 빠르게 개발 할 일이 있거나, 지나치게 동적이지 않은 웹페이지를 만들때에도 유용하다. 디자이너와의 분업에서도 JSP보다 강점이 있다. 스프링과의 연동성이 뛰어나다는 점도 장점이..