본문 바로가기

Web Hacking/Wargame

(112)
Webhacking.kr: old-59 if($_POST['lid'] && isset($_POST['lphone'])){ $_POST['lid'] = addslashes($_POST['lid']); $_POST['lphone'] = addslashes($_POST['lphone']); $result = mysqli_fetch_array(mysqli_query($db,"select id,lv from chall59 where id='{$_POST['lid']}' and phone='{$_POST['lphone']}'")); if($result['id']){ echo "id : {$result['id']} lv : {$result['lv']} "; if($result['lv'] == "admin"){ mysqli_qu..
Webhacking.kr : old-58 입력 폼에 help 명령을 통해, 어떤 명령어를 입력할 수 있는지 확인하였고, flag 명령을 send 해 보았다. flag 명령을 send 하면, 그림 2와 같이 Permission denied 란 결과가 나오며, admin 만이 flag 명령을 사용할 수 있다는 것을 확인할 수 있다. 그림 3과 같이 버프슈트를 통해, guest -> admin 으로 변경 후 socket 통신을 진행한다. 그 결과 FLAG가 출력되는 것을 확인할 수 있다. $(function () { var username = "guest"; var socket = io(); $('form').submit(function(e){ e.preventDefault(); socket.emi..
Lab: Manipulating WebSocket messages to exploit vulnerabilities 위 그림 1과 같이 web socket message를 Repeater 기능을 통해, 원래 메시지를 XSS 공격 코드로 변조해 전송해준다. ( 꼭 Repeater를 사용하지 않아도 된다. 필자는 여러 시도를 위해 Repeater 사용 ) 그림 2는 XSS 공격이 성공하며, 문제가 해결된 모습이다. 한줄 평 : websocket vulnerability에 대해 먼저 알고 풀어서..그런지 쉽긴했다..
Webhacking.kr : old-47 그림 1과 같이 개발자 도구를 통해 input type=text를 textarea 로 변경하면, text 입력 시 줄바꿈을 시행할 수 있다. 그림 2 와 같이 Cc: "이메일 주소"를 통해 mail header injeciton을 수행한다. 그림 3도 그림 2와 마찬가지로, mail header injeciton을 위한 기능이다. Bcc는 숨은 참조라고 불린다. 그림 3에서 request 한 패킷을 버프슈트를 통해 잡아보았다. %0D%0A는 CRLF 즉 줄바꿈을 의미한다. 그림 5와 같이 플래그를 획득하였다. 한줄 평 : Mail header injection.. 전혀 몰랐던 거다.. https://luxsci.com/blog/analyzing-forged-email-mes..
Webhacking.kr : old-25 그림 1과 같이 파라미터에 flag를 요청하면, "FLAG is in the code"라는 메시지가 출력된다. 하지만 페이지 내를 살펴보고, 패킷을 잡아봐도, flag에 대한 아무런 단서가 보이지 않았다. 이 문제는 PHP-include 함수, PHP-Wrapper, LFI 취약점( 서버 로컬 파일을 include 하는 취약점 )과 관련이 있다. 해당 문제에서는 아래 코드1과 같이, php://filter/ 를 사용해 해결하였다. http://webhacking.kr:10001/?file=php://filter/convert.base64-encode/resource=flag 그림 2와 같이 php-wrapper를 사용하여, base64로 인코딩 된 결과를 출력하게끔 만들었다. 해당 결과..
Webhacking.kr : old-19 그림 1과 같이 admin으로 접근 시 deny 된다. 그림 2에서 userid 쿠키를 볼 수 있다. 위는 a로 로그인 시 생성되는 쿠키값이다. id 별로 쿠키 값이 다르게 생성된다 유추하였고, 아래 코드 1과 같이 admin에 해당하는 알파벳의 쿠키값을 수집하였다. a MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE%3D d ODI3N2UwOTEwZDc1MDE5NWI0NDg3OTc2MTZlMDkxYWQ%3D m NmY4ZjU3NzE1MDkwZGEyNjMyNDUzOTg4ZDlhMTUwMWI%3D i ODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE%3D n N2I4Yjk2NWFkNGJjYTBlNDFhYjUxZGU3YjMxMzYz..
Webhacking.kr : old-32 vote_check 쿠키에 의해 alert() 창이 발생하게 된다. 그래서 위 그림 1과 같이 버프슈트로 패킷을 잡아 vote_check 쿠키를 제거해 준다. 100번을 리피터를 통해서도 누를 수 있지만, 인트루더를 사용해보았다. 인트루더를 사용하기 위해서는 payload값 중 변화되는 것이 있어야 하므로, X-Forwarded-For 헤더를 이용해 보았다. ( 클릭을 위해 변화만 주면 되므로,,, ) 그림 3은 인트루더 시행 전 설정과정이다. 얼떨결에 99번에서 인트루더 종료 후, 한번 클릭을 해주니 문제를 해결할 수 있었다. 그림 5와 6과 같이, 설정해준 후 진행하여도 괜찮다. 필자는 버프슈트를 로컬호스트 프록시로 연결되도록 설정하지 않았기에, 위..
Webhacking.kr : old-38 index.php 페이지에서 입력 폼에 값을 입력 후 전송하면, 그림 1과 같이 admin.php 페이지에 해당 로그가 기록된다. 그림 1에서 볼 수 있듯이 반드시 admin으로 로그인하라 하였으므로, 그림 2와 같이 admin을 보내보았다. 그림 2의 결과는 그림 3과 같다. 우리는 그림 1에서 볼 수 있듯이(모자이크 되었지만.. IP주소 ) IP 주소: 입력 값(아이디)과 같은 형식으로 로그가 기록되어지는 것을 알 수 있으므로, 아래 그림 5와 같이 값을 전달한다. 그림 5와 같이 개행을 포함하여, 전달하기 위해 그림 4에서 input 태그를 대신하여, textarea 태그를 사용해 준다. 위 그림 5와 같이 post 값 전달 시 IP주소: test 로그 밑에, IP주소:admin ..