webhacking.kr 19번, 20번 ,23번 ,25번 풀이

julia·2021년 3월 23일
0

💡 19번 문제 풀이

150점 맞나,,? 앞서 풀었던 200점짜리 문제들이 그렇게 쉬웠는데 개인적으로 19번 어려웠다ㅜㅜ admin으로 로그인을 하면 되는데 그냥 admin을 입력하니까 안돼서 혹시 sql injection인가 싶어 1을 입력하고 url을 확인했다.

그랬더니 위와 같은 이미지가 뜨고 url은 놀랍게도 그대로였다.. 로그인이 되었는데 url이 바뀌지 않았다는게 이상해서 쿠키값을 확인해봤더니 YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWI%3D 이런 값이 있었다. %3D는 =과 대응되는 값이고 =로 끝난다는건 base64 방식!!
이렇게 문제가 해결되는 줄 알았으나 YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWI%3D 이 값을 디코딩해보면 내가 입력했던 1과는 달라도 너무 다른 c4ca4238a0b923820dcc509a6f75849b7 가 나온다. 여러 시도와 검색 끝에 md5디코딩을 다시해야한다는 것을 알았고 그제서야 1을 얻을 수 있었다.

그래서 admin을 md5인코딩 -> base64인코딩 해서 쿠키값에 넣으면 되는 줄 알았는데 실패했다. 내가 1 하나만 입력해봐서 몰랐던 것이었다. 12를 입력해보면 문자수가 늘어난 것을 볼 수 있고, 이를 통해 단순히 인코딩한게 아니라 1과 2를 각각 md5인코딩한 후 그걸 합쳐서 base64인코딩해야 한다는 것을 유추할 수 있다. 따라서 우리는 a, d, m, i, n 따로따로 md5 인코딩하여 합쳐줘야한다. 그 값을 다시 base64인코딩해주면 드디어 문제가 풀린다.

💡 20번 문제 풀이


혹시 몰라서 저 값을 다 입력하고 섭밋했는데 too slow.. 라는 문구가 떴다. 와 진짜 나름 열심히 타이핑했는데 속상했다ㅋㅋㅜㅜ 다시 돌아가니까 time limit: 2 second 라는 문구가 나타났는데 사실상 2초만에 복붙도 안되는 captcha코드를 수동으로 입력하는건 불가능하기 때문에 개발자도구를 열었다.

<script>
function ck(){
  if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
  if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
  if(lv5frm.captcha.value=="") { lv5frm.captcha.focus(); return; }
  if(lv5frm.captcha.value!=lv5frm.captcha_.value) { lv5frm.captcha.focus(); return; }
  lv5frm.submit();
}
</script>

일단 입력칸들이 비어있으면 안되고, captcha값이 주어진 값과 동일해야한다.
따라서 콘솔 창에 아래와 같은 코드를 준비해놓고, 새로고침 후 바로 엔터를 치면 성공ㅎㅎ

lv5frm.id.value="julia";
lv5frm.cmt.value="hi";
lv5frm.captcha.value=lv5frm.captcha_.value;
lv5frm.submit();

💡 23번 문제 풀이

<script>alert(1);</script>

를 그냥 넣어봤는데 no hack이라고 떴다. sc까지만 쳐도 no hack이라고 나오는걸 보면 위의 코드 중 문자 2개 이상 못 붙이는 것 같다. 따라서 null을 의미하는 %00 를 글자들 사이에 넣어서 code 옆에 입력을 해보면,
[https://webhacking.kr/challenge/bonus-3/index.php?code=%3Cs%00c%00r%00i%00p%00t%3Ea%00l%00e%00r%00t(1);%3C/s%00c%00r%00i%00p%00t%3E]
이러한 url이 완성되고 문제가 풀린다.

💡 25번 문제 풀이


문제의 url은 http://webhacking.kr:10001/?file=hello 이다. hello 대신 flag를 넣어봤더니 flag가 소스코드 안에 있다는 문구가 나왔다.
이 문제에서는 php wrapper를 사용하는데,
[url]?pages=php://filter/convert.base64-encode/resource=flag
이런 형태로 적으면 된다.


url을 변경해서 들어가면 이런 인코딩된 코드를 준다. 이를 다시 base64디코딩해보면

<?php
  echo "FLAG is in the code";
  $flag = "FLAG{this_is_your_first_flag}";
?>

플래그값이 나온다. 이 값을 AUTH페이지에서 입력하면 완료!!

😎 느낀점

조금씩 난이도가 올라가는게 느껴진다. 그래도 끝까지 힘내서 완료할 것이다. 19번같이 난관이 있는 문제들이 앞으로 많을테지만 그때마다 포기하지 않고 침착하게 고민하면 분명히 해결할 수 있을 것이라고 생각한다. 화이팅!!

profile
Move Forward

0개의 댓글