Wargame(hacking)/webhacking.kr (51) 썸네일형 리스트형 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 .. Webhacking.kr : old-03 그림 1과 같이 Nonogram을 풀어주면, 아래와 같이 GET 인자값이 전송되며, 그림 2의 페이지로 이동한다. https://webhacking.kr/challenge/web-03/index.php?_1=1&_2=0&_3=1&_4=0&_5=1&_6=0&_7=0&_8=0&_9=0&_10=0&_11=0&_12=1&_13=1&_14=1&_15=0&_16=0&_17=1&_18=0&_19=1&_20=0&_21=1&_22=1&_23=1&_24=1&_25=1&_answer=1010100000011100101011111 그림 2에서 볼 수 있듯이 input창이 존재하는데, name=id이다. 필자는 SQL Injection을 해당 입력 창에 시도했었지만, 그대로 출력이 될 뿐, Injection .. Webhacking.kr : old-24 php의 extract 함수에 관한 취약점이 존재한다. extract($_COOKIE)는 쿠키의 값을 변수화 함을 의미하며, $REMOTE_ADDR는 사용자 클라이언트 IP(클라이언트 IP를 가져오는 PHP 환경변수)를 나타낸다. 그러므로 아래와 같이 문제 해결을 해준다. htmlspecialchars() 함수와 , str_replace() 함수를 고려해야 하므로 그림 1 과 같이 쿠키 값을 설정해 필터링을 우회해 준다. 예제 1) 그림 2 는 extract() 함수를 사용하고 있는 test.php 파일이다. 그림 3 과 같이 localhost/test.php 접속 시, 그림 2에 의해서 'test_string'이 페이지에 출력된다. 그림 4는 ex.. Webhacking.kr : old-06 아래 PHP코드는 문제풀이에 힌트가 되는 코드이다. 현재 쿠키값이 어떤 식으로 만들어졌는지를 볼 수 있다. $val_id 값으로 예를 들면, 이 값이 base64 encode를 20번 수행하고, str_replace 함수에 맞춰 문자들이 변환되어 쿠키값에 저장된다. 다음(아래 코드) 결정적인 힌트가 되는 코드이다. 쿠키 값 decode 과정을 통해 id == admin, pw == nimda 이면, solve 할 수 있다. 즉, admin, nimda 값을 위의 base_64 encode 과정을 통해 쿠키 생성을 해주면 된다. 그림 1과 같이 버프슈트를 통해 admin의 base64_encode를 20번 진행해 준다. 그리고 아래 문자열 replace 함수를 통해, 규칙대로 문자변환을 .. Webhacking.kr : old-06 < base64 > let user_id = 'admin' const encoding_string = btoa(user_id); console.log(encoding_string); function base64_encode(input_value){ for ( let i = 0; i 이전 1 2 3 4 5 6 7 다음