2019/10(62)
-
webhacking.kr 26번 문제(old)
바로 소스를 확인해봅시다. 소스만 보면 매우 간단한 문제인것 같습니다. GET 형식으로 받은 id 값이 admin 이면 풀리는것 같습니다. 하지만 조건문 보다 위에 preg_match 함수로 admin이란 값을 필터링 하고있기 때문에 admin이란 값을 넣어줄 수 없을 것 같습니다. 또한 그 밑에 id의 값을 urldecode() 함수를 통해서 변조시키는 것을 확인할 수 있습니다. 그럼 admin 의 값을 url 인코딩을 해서 입력해 봅시다. url 인코딩 표를 이용해서 admin을 바꾸면 %61%64%6D%69%6E 의 값이 됩니다. 그럼 이 값을 ID 로 입력해 봅시다. 위처럼 no! 라고 합니다. 맨 처음 조건절에서 preg_match() 함수에 막힌것 같습니다. 그 이유는 웹서버와 브라우저 사이에..
2019.10.15 -
webhacking.kr 24번 문제(old)
24번 문제의 메인 화면입니다. 바로 소스를 확인해봅시다. 소스를 해석해보면 우선 IP가 127.0.0.1 이면 풀리는것 같고 그 전에 조건문에서 str_replace()함수를 통해서 .. -> . , 12 -> "" , 7. -> "" , 0. -> "" 으로 각각 변환된다. 실제로 값을 넣어서 어떻게 조작되는지 확인해보자. 쿠키값의 이름으로 REMOTE_ADDR 이라는 이름을 지정해주고 값으로 127.0.0.1을 입력해주었다. 그랬더니 메인페이지의 client ip 창에 1이라는 숫자밖에 남지 않았다. 이러한 현상의 이유는 127.0.0.1 의 값을 넣어줬는데 12(공백으로 변환)7.(공백으로 변환)0.(공백으로 변환)0.(공백으로 변환)1 이 되어서 1만 남게 된 상황이다. str_replace()..
2019.10.15 -
webhacking.kr 23번 문제(old)
23번 문제의 메인 페이지다. 아래의 글을 보니 1이라는 경고창(alert())을 띄우면 될것 같다. 그래서 바로 스크립트 문을 주입해 주었다. 아마도 주입한 저 문자열에서 필터링이 걸리는것 같다. 그래서 하나하나 다 조사해 보니 , / 등은 걸리지 않는다. 하지만 여기서 저 특수문자들은 사용이 가능한데 아무 문자열을 2개이상 붙혀서 입력하면 no hack 이 뜨는것 같다. 결국 script 문자열을 사용하지 못한다는 말이다. 그래서 Null bite(%00) 을 글자 사이사이 마다 입력해보자. a%00l%00e%00r%00t(1); 그렇다면 null 의 특성때문에 각각의 자리에서 문자열이 끊길 것이고 그렇기때문에 우회가 가능 할 것으로 보인다. 이처럼 1이라는 경고창이 뜨게 되었고 문제를 풀..
2019.10.10 -
webhacknig.kr(old) 18번 문제
바로 소스를 봅시다. 주석을 보면 admin 의 no 는 2라고 하고 id 가 admin이면 문제가 풀리는것 같습니다. 그리고 preg_match() 함수를 통해 공백,( , ) | , & ,select , from , 0x 등을 필터링 하는것으로 보입니다. 그냥 url 값에다가 get 방식으로 no 를 넣어주어봅시다. 하지만 no의 값을 2로 만들어 줘야 하기 때문에 ?no=0%0aor%0ano=2 를 입력해봅시다. 여기서 %0a 는 개행문자(\n)로 공백을 우회할때 쓰이는 문자입니다.
2019.10.10 -
Los skeleton 10번 문제 (rubiya)
위의 쿼리문이 보이는데 id는 guest 로 지정되어있고 pw 뒤의 거짓의 값이 붙어서 어떤 값이던지 입력이 안될 것이다. 그래서 뒤의 거짓의 값을 주석으로 우회해주고 id 를 admin 으로 변조해주면 문제가 풀릴 것 같다. 우선 id 를 admin으로 만드는것 앞에서 많이 했기 때문에 바로바로 쿼리문을 작성하겠다. ?pw=%27%20or%20id=%27admin id의 값을 admin으로 바꿔주었다. 하지만 아직 뒤의 값을 주석으로 처리하지 못했으니 '로 문자열을 끝내고 #을 입력해주어 뒤의 값을 주석 처리해보자. ?pw=%27%20or%20id=%27admin%27%23
2019.10.10 -
Los vampire 9번 문제 (rubiya)
이번 문제도 id가 admin 이면 풀리는 문제이다. 하지만 str_replace 함수로 admin 을 입력하면 막힌다. 그렇지만 -> str_replace() 함수의 취약점으로 admin을 만들어 줄 수 있다. https://qhrhksgkazz.tistory.com/176 위의 사이트를 통해서 str_replace() 를 우회하는 법을 더 자세히 알 수 있습니다. str_replace 함수는 필터링할때 그 문자만 걸러주기 때문에 만약 admin 을 필터링 한다면 aadmindmin 을 입력해주면 a+admin+dmin 처럼 계산되어 admin을 지워주고 a 와 dmin 을 붙혀주어서 admin 을 만들어 줄 수 있다.
2019.10.10