[DreamHack] rev-basic-1
0번 문제와 동일하다. 입력 문자를 비교하는 부분으로 가보자. 입력한 문자열을 하나씩 읽어와서 비교한다. Clear;
0번 문제와 동일하다. 입력 문자를 비교하는 부분으로 가보자. 입력한 문자열을 하나씩 읽어와서 비교한다. Clear;
3가지 페이지가 존재하는 사이트가 나온다. 각각의 페이지에 대한 소스코드를 확인해본다. xss 특별한 것은 없지만, 필터링이 없어 xss가 가능한 페이지 memo 특정 문자에 대한 필터링이 존재하며, 아래 그림처럼 hello를 출력한다. flag GET으로 날릴경우 그냥 return해버리고, POST로 데이터를 보낼 경우 read_url함수를 통해 FLAG를 얻을 수 있다. read_url함수를 보면, FLAG가 포함된 쿠키를 생성하여 적용시킨다. 따라서 해당 쿠키를 얻어오면 문제를 풀 수 있다. Solve read_url 함수는 쿠키가 생성되고, 입력한 url를 참조한다. 따라서, 쿠키의 탈취가 가능하다. memo페이지는 전송한 파라메터 값을 그대로 출력해주는 페이지이다. 따라서, 해당 페이지 파라메터..
디지털 포렌식의 결과물인 디지털 증거가 를 가지기 위한 준칙 디지털 포렌식의 원칙을 준수하지 않은 디지털 증거 분석 행위는 이라고 보기 어려움 # 정당성의 원칙 적법절차의 원칙이라고도 부름 디지털 포렌식으로 획득된 모든 증거는 적법한 절차를 거쳐서 정당하게 획득한 것이어야 함 위법수집증거배제법칙 형사소송법 제308조의2(위법수집증거의 배제) 적법한 절차에 따르지 아니하고 수집한 증거는 증거로 할 수 없다.( 배제) 독수독과론(Fruit of the Poisonous Tree) 독 나무에서는 독 열매가 열린다는 이론으로, 위법수집증거에도 적용된다. 만약 위법하게 수집한 증거에서 파생된 증거가 있다면 해당 증거의 역시 배제된다. 앞 단계에서 절차 위반이 있었다면, 위법수집증거배제법칙과 독수독과론에 의해 그 ..
Stack - 스택은 프로그램이 자동으로 사용하는 임시 메모리 영역으로 지역 변수, 매개 변수등이 저장됨. - Buffer + Stack Frame Pointer[4byte] + ret[4byte] SFP는 현재 스택의 기준을 잡는 값 함수 시작 시 마다 push %ebp 하는 부분이 sfp가 된다. ret는 return의 약자로 함수가 종료되고 다음 실행해야 하는 명령의 주소를 가지고 있다. 참고할만한 것 : research.hackerschool.org/Datas/Research_Lecture/sfp.txt
사진처럼 특정 메모를 업로드 할 수 있는 사이트가 제공된다. 메모를 업로드하면 제목과 내용이 표시된다. 소스코드를 확인해보자. 업로드 부분의 코드를 먼저 확인해보자. 특정 문자를 필터링하는 것으로 보아 내용을 업로드하는 부분에서는 공격을 하기위해서는 우회를 해야할 거 같다. 하지만 아래 read_memo()함수를 보면 따로 필터링을 거치지 않고 내용을 읽어오는 것을 볼 수 있다. 따라서 host1.dreamhack.games/read?name=12 부분에서 ../flag.py를 읽어 오도록 하면 flag를 얻을 수 있다.
소스코드의 일부분이다. 코드를 보면 POST로 데이터를 전송해야 정상적으로 userinfo를 보여주게되는데, 이때 따로 검증을 하는 구간이 없다. 따라서 이 부분을 활용해 상위폴더의 flag를 출력해줄 수 있다. 하지만, 이 부분에서 guest를 입력시 0으로 변환되어 값이 전송되고, admin을 입력시 1로 변환되어 전송된다. 그 이외의 값은 undefined로 변경되어 날라간다. 따라서 burpsuite를 통해서 날아가는 값을 변경해주어도 되지만, Chorme Console창에서 아래와 같이 진행하여도 된다. 위 javascript를 보면 users[document.getElementById('userid').value]; 를 통해 최종 값이 입력된다. 따라서 users['원하는 입력 값']='../..
소스 코드의 일부이다. 얼핏 보기에 따로 필터링 되는 부분이 없기에 아주 기초적인 sql injection 문제다. userid가 admin일 경우 flag를 출력된다. 따라서 admin의 password는 랜덤으로 설정되기 때문에 sql query문에서 userid를 admin으로 설정해주고 뒷 부분은 주석처리를 하면된다. select * from users where userid="admin" -- and userpassword="{userpassword}" 의 형식으로 만들어 주면 FLAG가 뜬다.