SlowTurtle_

천천히 그러나 끝까지 완주

728x90

Webhacking-Write-Up 59

[Webhacking.kr] 24, 25, 26, 27, 32 문제

24번 문제 코드를 보자. view-source 해결은 간단하다 ip가 127.0.0.1이면 해결된다. 그럼 해결하기위해 다른 코드들을 해석해보자. extract함수는 배열의 키값들을 변수화 시킨다. 그리고 $ip 변수에는 $REMOTE_ADDR의 값이 저장되어 있음을 알 수 있다. if절은 $REMOTE_ADDR 값이 존재할 때 실행한다. 또한 .., 12, 7., 0. 을 replace함수를 사용해 치환 시킨다. 즉, REMOTE_ADDR의 변환 값이 127.0.0.1이면 해결이다. 우리는 COOKIE값을 변경할 수 있으니 그것을 이용해보자. 개발자 모드에 들어가 원래 있던 쿠키의 Name을 REMOTE_ADDR로 변경하고 Value에 112277...00...00...1값을 넣었다. Value에 저..

[Webhacking.kr] 33, 34, 50, 51, 54 문제

33번 문제 코드를 보자. Challenge 33-1 view-source ?get=hehe하면 Next가 생긴다. Next를 누르면 다시 제자리로 돌아온 것 같지만? lv2.php로 왔다. Challenge 33-2 view-source post방식으로 post와 post2변수가 hehe와 hege2이면 Next가 뜬다. 버프슈트를 이용하여 메소드방식을 post방식으로 변경 후 보냈다. Challenge 33-3 view-source GET방식으로 myip와 내 ip와 같으면 넘어간다. ?myip=내ip로 보냈다. Challenge 33-4 view-source password 와 md5(time())한 값이 같아야한다. hint로 time()값을 알려주나 이 time()은 시간이 지날수록 계속 증가한..

[Webhacking.kr] 16, 17, 19, 20, 23 문제

16번 문제 3번째 별에 마우스를 올리면 사라진다!(별을 좋아해서..) 코드를 보자! unlock = 숫자인데 그냥 코드를 옮겨서 계산했다. a = 100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+1/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+100*10*10+100/10-10+10+50-9*8+7-6+5..

[webhacking.kr] 10, 11, 12, 14, 15 문제

10번 문제 코드부터 봤다. O | | | | Goal onclick부분을 보니 한 번의 클릭마다 1px씩 늘어난다. 1px씩 늘려서 this.style.left==1600px가 되면 go에 this.style.left를 보낸다. 결국 1600px를 만들어 Goal하면 된다. 그러면 그냥 1px늘어나는 것을 1599px로 바꿔보자. 해결했다. 11번 문제 코드를 보자. view-source $pat부분을 보면 정규표현식이 사용된 것을 알 수 있었다. [1-3]은 1, 2, 3 중 하나를, [a-f]는 a, b, c, d, e, f중 하나를, {5}는 5번을 반복해라, _ , $_SERVER(REMOTE_ADDR]는 IP주소, \tp, \tq, \ts, \ts/ 에서 \t는 탭을 의미하니 url인코딩을 해..

[Dreamhack] File Vulnerability Advanced for linux

[Dreamhack] File Vulnerability Advanced for linux 필요한 코드만 가져와 봤다. @app.route('/file', methods=['GET']) def file(): path = request.args.get('path', None) if path: data = open('./files/' + path).read() return data return 'Error !' /file을 보자. path파라미터를 통해서 ./files/경로로 파일을 읽어온다. 그러나 path파라미터에서 아무런 필터링이 없기 때문에 Path Traversal 취약점이 발생한다. @app.route('/admin', methods=['GET']) @key_required def admin(): ..

[Dreamhack] Command Injection Advanced

[Dreamhack] Command Injection Advanced 필요한 코드만 가져와서 봤다. url파라미터를 통해서 입력값을 받고 http문자열로 시작하는지 검사한다. http로 시작한다면 shell_exec함수를 통해서 curl명령어를 실행하고 그렇지 않다면 http only를 출력한다. 입력받은 주소를 md5해싱한 후 그 결과를 파일 이름으로 저장하고 curl명령어의 결과를 파일내용에 cache 디렉토리에 저장한다. 1~3주차 때 만들어서 호스팅한 서버를 입력해봤다. cache 디렉터리 하위에 저장된 것을 볼 수 있다. 링크를 누르니 단순 html만 띄워지는 것을 알 수 있다. 음 실험은 여기까지하고 위 코드를 보면 escapeshellcmd함수로 shell 메타 문자를 사용할 수 없게 했다...

728x90