웹해킹(77)
-
old-24 풀이
코드를 한 줄 한 줄 해석해보겠습니다. extrack($_SERVER) : SERVER의 값을 변수로 변환 extrack($_COOKIE) : COOKIE의 값을 변수로 변환 if($REMOTE_ADDR) 부분을 보면 htmlspecialchars() 함수를 사용해서 특수문자를 필터링하는 것을 볼 수 있습니다. 그리고 str_replace() 함수를 이용해 필터링을 해주고 있습니다. .. -> . 12 -> NULL 7. -> NULL 0. -> NULL if($ip=="127.0.0.1")을 보면 ip 주소가 127.0.0.1일 때, 문제가 풀리는 것을 알 수 있습니다. 우선, 같은 문자를 여러 번 넣는 방식으로 필터링 우회를 해서 ip를 조작하면 될 것 같습니다. $REMOTE_ADDR에 COOKIE..
2021.08.27 -
old-23 풀이
를 실행시키라고 나와있습니다. 우선 입력창에 를 넣어보겠습니다. URL을 보면 GET 형식으로 입력을 받는걸 볼 수 있습니다. 그리고 no hack이 뜨는걸 보면 php 코드 내에 필터링 구문이 있을 듯합니다. 주어진 코드가 없기 때문에 특수문자들을 입력해가며 어떤 것들을 필터링하는지 찾아보겠습니다. 123 -> 123 abc -> no hack aa -> no hack -> no hack ! # -> # and -> no hack or -> no hack && -> && || -> || 1 -> 1 a1a1 -> a1a1 숫자는 필터링 대상이 아닌 것 같고, abc랑 aa를 필터링하는거 보니 그냥 연속된 알파벳은 필터링 하는 것 같습니다. 그리고 태그를 실행시켜보니 정상적으로 실행됐습니다. 알..
2021.08.26 -
web-ssrf 풀이
/img_viewer 페이지에 들어가 보겠습니다. 기본값으로 /static/dream.png라는 url이 들어있습니다. View를 눌러서 무슨 파일인지 확인해보겠습니다. 그냥 드림핵 로고 그림의 png 파일이었습니다. 소스코드에서 elif 부분을 보면 POST 형식으로 보내야 한다는 걸 알 수 있습니다. 이제 어떻게 flag.txt를 찾아야 할지 생각해봐야 하는데, 여기서 local_host 변수를 보면 host는 127.0.0.1로 고정입니다. 하지만 local_port 변수는 1500~1800 사이 범위에서 랜덤으로 주어집니다. 그렇기에 이 port를 중심으로 Brute force를 돌려서 문제를 해결하면 될 것 같습니다. 또한, 코드에서 elif 안에 있는 elif를 보면 127.0.0.1을 필터링..
2021.08.25 -
old-52 풀이
우선 메인 페이지에 admin page로 접속하는 부분이 있으니, 클릭해보겠습니다. 이런 팝업창이 뜨면서 로그인을 요구합니다. guest로 로그인 해봤자 별로 얻을건 없을 것 같으니 우선 취소 버튼을 누르겠습니다. 그러면 이렇게 view-source가 나타나게 되고, 소스코드를 볼 수 있게됩니다. 이 소스코드에서 주목해야할 부분은 아래와 같이 두 부분입니다. 페이지에 어떤 취약점이 있는지 알았으니, 다시 로그인 창을 열어 admin으로 로그인 해보겠습니다. (ID : admin'#) 이제 소스코드를 보면서 조건에 맞춰 URL query를 작성해보겠습니다. page=/admin/%20HTTP/1.1%0d%0aHost:%20webhacking.kr:10008%0d%0aCookie:%20PHPSESSID=n3..
2021.08.23 -
golem 풀이
이번 문제는 admin의 실제 pw를 알아내면 풀리는 문제입니다. 아무래도 Blind SQL Injection 문제 같습니다. 필터링하는 요소들을 보니 or, and, substr(, =의 4가지입니다. or이랑 and는 각각 ||, &&로 우회가 가능합니다. substr(, =은 어떻게 우회를 할지 생각이 나지 않아서 구글링을 좀 해봤습니다. https://m.blog.naver.com/xkdlffpshf/221368224853 PHP 필터링 우회기법 잘 알려지고 자주 쓰이는 연산자,함수는 필터링되기 마련이다. 그래서 php일때 필터링 우회기법을 여기다 ... blog.naver.com shirokawaii님 감사합니다...! 이제 pw의 길이부터 알아보도록 하겠습니다. 1부터 차례차레 브루트 포스 방..
2021.08.22 -
skeleton 풀이
id가 admin일 때 문제가 풀립니다. 현재 id는 guest인데, 그렇다면 pw 부분에서 id를 admin으로 변조하는 형식으로 문제를 풀어야 할 것 같습니다. 그런데 $query 부분을 보면 and 1=0이라는 구문이 적혀있습니다. 이 말은 즉슨, 맞는 쿼리문을 작성하더라도 전체 쿼리문이 false로 바뀐다는 뜻입니다. 그럼 이 부분은 주석처리를 하겠습니다. DB에서 사용되는 주석은 #, --, /**/의 세 가지가 있습니다. 저는 #이 사용하기 편하니 #을 사용하도록 하겠습니다. (#을 URL Encoding 하면 %23, '은 %27이 됩니다.) 그러면 쿼리문에 '||id='admin'#을 URL Encoding 한 형식으로 작성해주겠습니다. pw=%27||id=%27admin%27%23 and..
2021.08.22