분류 전체보기 (312) 썸네일형 리스트형 cobolt 문제 풀이 1. 필터링 확인 및 pw는 md5 암호화됨 _ \. () 문자가 필터링되어 있음 2. 문제 풀이 select id from prob_cobolt where id ='admin' or '1=1 --' and pw=md5('') 구문에서 --으로 pw를 주석 처리 해줌 gremlin 문제 풀이 1. 필터링 확인 _ , \. , ()을 사용하는 경우 No Hack 페이지로 넘어간다. 2. 페이로드 구문 select id from prob_gremlin where id='admin' and pw='123'or '1=1' 구문을 pw 부분을 참으로 만들어 준다. 다른 방법의 페이로드 select id from prob_gremlin where id='admin' or '1=1--' and pw ='' 구문은 --으로 pw 부분을 주석 처리해 준다. 리눅스 커널 해킹 (배경 지식) • 리눅스 커널 개론 - 컴퓨터의 가장 기본적인 자원들을 관리하고 통제하기 위한, 운영체제의 핵심이 되는 소프트웨어 - 커널 내부는 태스크 관리자, 메모리 관리자, 파일 시스템, 네트워크 관리자, 디바이스 드라이버 관리자 등으로 구분됨 - 가상 메모리 구조상 스택의 윗 영역에 존재 - 가상 메모리의 3~4GB 구간에 존재하는 커널 영역은 모든 태스크들의 공통 영역으로 사용됨 - 가상 메모리 주소와 물리 메모리 주소를 변환하기 위해 커널 내부에는 페이징 기법이 구현되어 있음 1. 유저 모드 / 커널 모드란? - 하나의 프로세스가 실수로 다른 프로세스에 입출력 작업을 하는 등의 보안적 이슈르 방지하기 위해, 유저가 컴퓨터의 자원에 함부로 접근할 수 없도록 모드를 나누어 둔 것 - 유저 모드 : 접근할 수 있.. XS-Search [WEB LEVEL1] XS-Search 공격은 다른 오리진의 비밀 정보를 SOP를 우회하여 쿼리 형태로 한 글자씩 유출하는 형태의 공격이다. 로컬호스트에서만 접근할 수 있는 플래그에 접근하여 한글자씩 유출하는 것이다. 이건 소스코드를 확인을 안하면 못 풀꺼같은 문제이다... if 문을 보면 private가 True이고 remote_addr이 127.0.0.1이 아니고 headers 부분 중 HOST의 값이 127.0.0.1:8000이 아니면 continue로 가는 거 같다. if 문을 빠져나가기 위해서는 HOST 부분에 127.0.0.1:8000을 주면 빠져나오는 거 같다. 버프를 사용해 HOST 값을 127.0.0.1:8000로 수정을 해주고 요청을 보내니까 응답값에 flag 값이 출력이 된다. simple-web-request [WEB LEVEL1] STEP 1부터 한 단계씩 풀어가는 문제이다. param1의 값이 getget 그리고 param2의 값이 rerequest 값이 되면 step2로 넘어가는 소스코드이다. param에 getget , param2에는 rerequest을 입력하면 STEP2로 넘어가진다. /step2 페이지의 소스코드에는 flag에 대한 얻을 정보는 존재하지않는다. /flag 페이지를 보면 prm1 값이 pooost 이고 prm2는 requeeest이다. 소스코드에서 본 값을 param에는 pooost 값을 넣고 param2에는 requeeest값을 넣는다. ex-reg-ex [WEB LEVEL1] input_val 값이랑 'dr\w {5,7} w\d+am@[a-z]{3,7}\.\w+'로 되어 있는 정규화 표현식 와 비교하여 일치하며 flag 값을 출력해 주는 소스코드이다. 정규화식을 해석하면 dr+영숫자 5~7개+e+숫자1개+am+@+소문자 3~7개+.+영숫자 1개이다. 정규화식에 맞는 이메일 값을 넣으면 flag 값이 출력이 된다. post방식으로 작성한 페이로드 import requests url = 'http://host3.dreamhack.games:18603/' data = {'input_val':'dr12345e1am@acd.4'} req = requests.post(url,data=data) print(req.text) out of money [WEB LEVLE1] admin을 입력하니 admin이름으로 코인을 거래하는 페이지로 이동이 된다. flag을 구매하기 위해서는 드핵코인이 필요하다. 소스코드를 보면 드핵코인(DHH)가 1000 이상 있으면 flag을 구매할 수 있다. 문제 풀이 : 무담보 대출로 1000을 받는다. -> 드핵코인 1000을 담보로 넘기고 드멍코인을 2000까지 받는다. -> 그다음 드멍코인을 드핵코인으로 바꾸고 드핵코인 대출 1000을 갚는다. -> 드핵코인 1000이 남아 flag을 구매할 수 있다. type confusion [WEB LEVEL1] type confusion 취약점은 객체의 인스턴스가 타입을 혼동하여 생기는 취약점이다. 문제의 소스코드를 확인해 보자. json_decode($POST ['json'] 은 POST 방식으로 json 데이터를 받아서 저장한다. php소스에서 == 가 같은 비교문은 느슨한 비교를 한다. 개발자 모드를 통해 js 파일을 확인했을 때, submit 함수에서 JSON.stringify() 함수로 자바스크립트의 값을 JSON문자열로 변환시켜 준다. JSON.stringfy({key: key}) 값을 JSON 문자열로 반환을 해주고, PHP에서 해당 값을 json_decode를 해준다. PHP 소스에서 if(json -> key == key)에서 key값을 true을 만들면 flag 값을 얻을 수 있다. 즉, js.. 이전 1 ··· 21 22 23 24 25 26 27 ··· 39 다음