반응형

분류 전체보기 225

old-54

풀이 페이지를 열면 9 부분자리에 Flag 값이 한자리씩 노출된다. 그런데 금방 없어져서 놓치게 된다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=run(); function answer(i){ x.open('GET','?m='+i,false); x.send..

old-47

풀이 페이지를 보면 메일 제목만 적어서 보내는 기능이 존재한다. 버튼을 누르면, 메일 헤더와 데이터를 보내는 모습이 보인다. 그런데 데이터 부분에 flag를 전송한다. 그렇다면 헤더 부분을 조작하여 내 메일 주소로 보내면 flag를 받을 수 있것 같다. 메일에서 참조(Cc: Carbon Copy) 기능을 사용해서 내 메일도 받을 수 있게 subject와 같이 보낸다. 응답 값을 보면 RCPT TO 부분에 내 메일까지 첨부된 것을 볼 수 있다. 메일을 확인해보면 이렇게 Flag가 왔다!! Flag FLAG{wasted_too_much_time_damn}

old-33

풀이 1단계 문제 페이지를 열면 링크가 하나 주어진다. 해당 페이지를 열면 소스코드가 주어지는데, 여기서 조건을 맞추면 다음 링크가 주어진다. import requests URL = 'https://webhacking.kr/challenge/bonus-6/' # # 33-1 url_1 = URL + '?get=hehe' res = requests.get(url_1) print(res.text) 2단계 주어진 링크를 받아서 들어오면 또 다른 문제가 주어진다. # 33-2 url_2 = URL + 'lv2.php' datas = { 'post': 'hehe', 'post2': 'hehe2' } res = requests.post(url_2, data=datas) print(res.text) 3단계 # 33-..

coin1

설명 Mommy, I wanna play a game! (if your network response time is too slow, try nc 0 9007 inside [pwnable.kr](http://pwnable.kr/) server) Running at : nc [pwnable.kr](http://pwnable.kr/) 9007 시작하면 하는 방법이 나온다. 설명을 해석해보면 금화를 주었다. 동전 중 위조품이 하나 있다. 위조품은 실제 동전과 똑같다. 그러나, 위조품은 실제 동전과 무게가 다르다. 실제 동전은 무게가 10이다. 가짜 동전은 무게가 9이다. 저울을 이용해서 가짜 동전을 찾는데 도움이 될 것이다. 만약 가짜 동전을 100전 찾으면, 너에게 상을 줄 것이다. 참고로, 60초 주어진다..

WarGame/pwnable.kr 2020.12.23

함수의 오버로딩 (Overloading)

컴파일에서 함수를 오버로딩하는 과정 함수의 이름은 같은데 매개변수, 리턴타입 등의 특징은 다른 여러개의 함수를 만들 수 있는 기능 자신과 타입이 정확히 일치하는 함수를 찾는다. 정확히 일치하는 타입이 없을 경우, 형변환을 통해서 일치하는 함수를 찾는다. char, unsigned char, short는 int로 변환 unsigned short는 int의 크기에 따라 int 혹은 unsigned int 로 변환된다. float은 double로 변환된다. enum은 int로 변환된다. 2단계까지도 일치하는 것이 없다면 임의의 숫자(numeric) 타입은 다른 숫자 타입으로 변환 (ex float -> int) enum도 임의의 숫자 타입으로 변환된다. (ex enum -> double) 0은 포인터 타입이나..

프로그래밍/C++ 2020.12.21

가상환경(virtualenv) 사용법

파이썬 가상환경은 파이썬 프로젝트를 진행할 때 독립적인 환경을 만들어 주는 툴이다. 예를 들어 파이썬 개발자가 2개의 프로젝트를 개발하고 관리한다고 가정했을 때 각각의 프로젝트에 사용된 파이썬 및 라이브러리들의 버전이 다를 수 있다. 각각의 프로젝트에 사용된 파이썬 및 라이브러리들의 버전이 다를 수 있다. 그럴 때 개발자 PC에 두 프로젝트의 환경을 다르게 설정하려면 무척 어렵기도 하고 고생도 아주아주 많이 하게 된다. 하지만 virtualenv를 이용하면 독립된 가상환경이 생기게 되어서 서로다른 버전의 파이썬과 라이브러리들에 대해서 걱정을 할 필요가 없다. mkdir venvs cd venvs python -m venv mysitepython -m venv의 의미는 파이썬 모듈중 venv를 사용한다는 ..

access 함수

#include int access(const char *pathname, int mode);반환 값 성공 시 : 0 실페 시 : -1 이 함수는 프로세스가 지정한 파일이 존재하는지, 읽거나 쓰기나 실행이 가능한지를 확인하는 함수이다. 만일 지정한 파일이 심볼릭 링크라면 링크의 원본을 체크한다. 첫 번째 인자는 파일이나 디렉토리 전체 이름 두 번째 인자는 검사할 내용 mode R_OK : 읽기가 가능한가? W_OK : 쓰기가 가능한가? X_OK : 실행이 가능한가? F_OK : 파일이 존재하는가? #define R_OK 4 /* Test for read permission. */ #define W_OK 2 /* Test for write permission. */ #define X_OK 1 /* Test..

ARP 프로토콜

0 1 2 3 Hardware Type Protocol Type Hardware Address Length Protocol Address Length OP Code Sender Hardware Address Sender Hardware Address Sender Protocol Address Sender Protocol Address Target Hardware Address Target Hardware Address Target Protocol Address ARP 헤더의 크기는 28 byte이다. Hardware Type은 Ethernet 환경이면 1이 설정된다. Protocol Type은 조회되는 프로토콜이면 IP를 조회하는 것이기 때문에 0x0800 값이다. MAC 주소와 IP 주소의 길이는 각각..

shellshock

소스 코드 #include int main(){ setresuid(getegid(), getegid(), getegid()); setresgid(getegid(), getegid(), getegid()); system("/home/shellshock/bash -c 'echo shock_me'"); return 0; } 풀이 코드를 살펴 보면 setresuid를 설정하여 shellshock_pwn의 권한으로 다 설정한다. 그리고 마지막에 system 함수를 통해서 "shock_me" 라는 문자열을 출력한다. 우선 문제는 shellshock라는 취약점이 존재한다. shellshock 취약점은 bash 버전의 환경변수와 함수 선언에서 나타나는 취약점이다. 환경 변수 선언 export test='hello' 보..

WarGame/pwnable.kr 2020.12.02
반응형