프롤로그
하루 한 문제씩 드림핵을 풀기에는 지금, 한 문제 푸는 데에 너무 오래걸린다.
할 일은 많은데, 그래서 다른 워게임들도 풀어보려고 찾았고, webhacking.kr를 찾아서 풀어보려고 한다.
1번 문제는 풀었으나, 너무 쉬웠어서 2번문제 부터 풀려고 한다.
문제 및 소스코드
처음 들어갔을 때는 그냥 검정화면에, view-source 가 보인다
view-source를 누르면
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
a { color:lightgreen; }
</style>
</head>
<body>
<?php
if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] == "admin"){
solve(26);
}
?>
<br><br>
<a href=?view_source=1>view-source</a>
</body>
</html>
풀이전략
<?php ?>사이 부분을 보면
파라미터로 admin을 입력이 되면 문제가 풀릴 것이다. 다만 그 위에, 파라미터로 admin이 입력되면 no!가 입력이 될 터이니 그것을 우회해야한다.
풀이과정
https://webhacking.kr/challenge/web-11/?id=admin
를 맨 처음에 입력해보자.
no!가 출력이 되었다.
admin을 우회해야하는 방법들을 찾아보았다.
다음 생각해본 것으로는
if($_GET['id'] == "admin"){
solve(26);
}
여기 부분에서 ==를 쓴다는 것. 즉 느슨한 비교를 쓴다는 것을 확인하였다.
숫자, 배열등을 입력하여서 강제 형변환이 되어 true가 되는 방식을 한 번 시도해보았다.
https://webhacking.kr/challenge/web-11/?id=0
https://webhacking.kr/challenge/web-11/?id=[]
https://webhacking.kr/challenge/web-11/?id=null
https://webhacking.kr/challenge/web-11/?id=true
모두
결과값이 나오지 않았다.
http://www.lug.or.kr/files/docs/PHP/types.comparisons.html
여길 참고하여 0, true를 해보았으나...되지 않았다.
그러면 이제 다른 방식을 찾아야한다.
다음은 url 인코딩 방식이다.
공백의 경우 %20으로 변환이 된다.
이것을 활용하여 admin을 url 인코딩 해본결과
%61%64%6D%69%6E
이렇게 나왔고, 이것을 넣어보면
https://webhacking.kr/challenge/web-11/?id=admin
이렇게 다시 admin으로 바뀌면서 no!가 나온다.
여기까지는 내가 생각한 방식이고 이제 다른 블로그들을 참고한 결과
%61%64%6D%69%6E
이것을 한 번 더 인코딩을 해주었어야한다.
%2561%2564%256D%2569%256E
이 값을 넣어주면
해결되었다는 알림이 뜨면서 문제가 해결되었다.
왜?
%2561%2564%256D%2569%256E 가 들어가게 되면,
$_GET['id'] 에는 %2561%2564%256D%2569%256E 이게 들어가게 된다.
preg_match("/admin/", $_GET['id']) 여기서 그래서 admin이 아니기에 우회
urldecode($_GET['id'])가 실행되면 한 번만 디코드 되기에 여기서
%61%64%6D%69%6E 이렇게 변형된다.
이건 admin이 되므로, 조건에 통과하게 된다.
에필로그
php는 url 인코딩, 느슨한 비교, 타입변환 관련되 내용들 밖에 없나?
'보안 스터디 > 웹 해킹' 카테고리의 다른 글
[드림핵/워게임] [wargame.kr] tmitter (웹 해킹) (1) | 2024.09.28 |
---|---|
[드림핵/워게임] random-test (웹 해킹) (2) | 2024.09.26 |
[드림핵/워게임] baby-union (웹 해킹) (9) | 2024.09.25 |
[드림핵/워게임] what-is-my-ip (웹 해킹) (3) | 2024.09.22 |
[드림핵/워게임][wargame.kr] login filtering (웹해킹) (2) | 2024.09.20 |