문제풀이xss-1과 마찬가지로 3가지 페이지가 나온다. def xss_filter(text): _filter = ["script", "on", "javascript"] for f in _filter: if f in text.lower(): text = text.replace(f, "") return textxss-1와 차이점이 있다면, 위와 같이 script, on, javascript 를 필터링하고 ""로 replace 한다는 점이다. locatioonn.href='http://127.0.0.1:8000/memo?memo='+document.cookie필터링을 우회한 xss payload다. script, on, javascript를 필터링할 때, 프로세..
문제분석 & 풀이url을 입력하고 curl 요청하는 페이지다. 코드를 확인해보자. cache file: {$cache_file}"; echo ''. htmlentities($result) .''; return; }}else{?>코드 분석url은 http로 시작해야한다.curl $url 로 curl 명령을 실행한다.캐시 파일을 /cache 경로에 저장한다.실행 결과를 화면에 출력한다. url을 이용해서 curl 명령을 실행한다. 따라서 ;와 같은 문자를 추가하면 curl 명령 외에도 임의의 명령을 실행시켜서 command injection을 수행하는 방식을 생각했다. 하지만 escapeshellcmd($_GET['url'])로 ;, | 등의 문자열을 사용해도 이스케이프 처리되..
checksec└─# checksec r2s[*] '/root/dream/rts/r2s' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX disabled PIE: PIE enabled RWX: Has RWX segmentsNX 보호기법이 적용되지 않았다. 따라서 쉘코드를 이용한 공격이 가능하다. 문제분석 & 풀이int main() { char buf[0x50]; init(); printf("Address of the buf: %p\n", buf); printf("Distance between buf and $rbp: %ld\n",(char*)__bu..
문제분석 & 풀이uid와 upw를 전송해서 로그인하는 방식이다. 그대로 요청해보면 guest로 로그인된 것을 확인할 수 있다. 로그인이 성공하면 uid가 출력된다. 목적은 upw를 구해야하므로 blind nosql injection을 수행해야한다고 짐작할 수 있다. const db = mongoose.connection;...app.get('/login', function(req, res) { if(filter(req.query)){ res.send('filter'); return; } const {uid, upw} = req.query; db.collection('user').findOne({ 'uid': uid, 'upw': up..