본문 바로가기

반응형

웹해킹

webhacking.kr(old) 61번 webhacking.kr 61번은 소스코드 보기가 바로 있다. php코드가 바로 있다. solve하기 위한 곳을 바로 보니 result[id]가 admin이어야 풀린다고 한다. result는 select문으로 이루어져 있고, 그 위를 보니 id 길이가 15넘으면 exit()한다고 한다. 또 그 위를 보니, \(, \), select, from, by, \.가 id에 들어가면 exit한다고 한다. 또 그 위를 보니, id에는 addslash(\)한다고 되어 있다. 어쨌든 id가 admin이어야 하므로 id=admin을 넣어보도록 한다. 딱히 달라진 점은 없다. 검색을 해보니, SQL에서는 칼럼 별칭이 있다고 한다. 'SELECT A as id~'처럼 A라는 별칭을 id로 사용하는 방법이 존재한다고 한다. .. 더보기
webhacking.kr(old) 60번 60번을 보면 이런 창이 나온다. 코드를 보니, is_numeric(~)을 통해 PHPSESSID에 숫자가 아닌 것이 있으면 exit()한다는 것을 알아냈다. mode=auth이고 result의 조건이 맞아야 solve된다고 한다. 쿠키에서 PHPSESSID를 1로 바꾼다. (EditThisCookie사용. f12의 application사용해도 무방) mode=auth로 했더니 이런 화면이 나온다. 딱히 뭐 바뀐 것은 없는 듯 하다. 코드를 다시 보니, IP가 127.0.0.1이 아니면 1초만에 파일을 지워버린다는 것을 알 수 있었다. 때문에, 지우기 전에 다른 세션으로 접속해보아야 할 듯 하다. 설정해놓은 크롬창 위에 시크릿창을 띄운다. 시크릿창의 쿠키 값은 다르게 설정했다. 새로고침 2개를 바로바로 .. 더보기
webhacking.kr(old) 59번 표처럼 구성되어 있음을 확인할 수 있다. view source를 통해 php코드를 본다. 일단 if문 전까지만 보도록 한다. if문 안을 보니, lid에 addslash(\)함을 확인할 수 있다. lphone에도 addslash(\)함을 확인할 수 있다. result에는 id=' ' and phone=' ' 가 들어간다고 한다. 밑에선 result['lv'] = admin이어야 풀림을 알 수 있다. 이제 밑의 if문을 본다. 위의 if문과 비슷한 것 같은데 이번엔 id, phone을 더 다루는 듯 하다. id와 phone에 addslash(\)함을 확인할 수 있다. phone이 20자가 넘으면 'ACCESS DENIED'라고 한다. admin이 id에 들어가면 exit()하고, admin, 0x, hex.. 더보기
webhacking.kr(old) 51번 admin page가 있다. 1과 1을 넣었는데 아니라고 한다. 소스를 보도록 한다. 뭔가 많은 듯 하다. 필요한 부분만 봐야겠다. dbconnecd하고, id에 addslash, pw에는 받아온 pw를 md5하는 듯 하다. 근데 여기서 true가 있으므로 바이너리로 반환하는 듯 하다. result가 맞아야 solve된다는 것을 알 수 있다. 근데 여기서, result가 SQL문임을 확인할 수 있다. 보통은 where id='1' and pw='1 or '1'으로 풀 수 있다. 하지만 md5가 들어가서 이렇게 쉽게 생각해선 안 되고, id에는 addslash(\)가 들어가서 우회가 쉽지는 않은 듯 하다. 그래서 md5 SQL injection을 검색해서 찾아봤다. true = false => false .. 더보기
Webhacking.kr(old) 24번 이번 문제는 wrong IP라고 적혀있는 것을 보니, IP주소와 관련 있나 보다. 위쪽 php코드를 보니, config.php와 관련 있는 것을 알 수 있다. 이제 아래쪽 php코드를 본다. 서버와 쿠키를 extract하고, ip와 agent(http_user_agent)를 정해준다. 만약 remote_addr이 있다면, ip에 htmlspecialchars를 반환하고, ..을 .으로, 12,7,0을 ip에서 없애는 것을 볼 수 있다. 다른 정보는 생략하고, ip가 127.0.0.1이어야 풀림을 확인할 수 있다. 근데 위에서 보면 12,7,0을 ip에서 없애고 ..을 .으로 바꾼다는 것을 알 수 있었다. 근데 여기서, str_replace() 함수는 처음에만 값을 검사하고 그 후 다시 저장된 값은 검사를.. 더보기
webhacking.kr(old) 1번 1번에선 이렇게 검정색인 화면을 볼 수 있다. 소스를 봤다. php부분이 2부분이 있는데 일단 윗부분을 보도록 한다. include가 있는 것을 보니, 저 파일과 관련 있는 행동을 하는 듯 하다. view source를 받아오면 소스를 볼 수 있고, cookie를 아래처럼 정하는 듯 하다. 아래쪽을 보니, 6보다 크면, cookie를 1로, user_lv가 5보다 커야 풀린다고 한다. 그럼 한 5와 6의 중간 5.5로 하면 될 듯 하다. 쿠키를 바꾸기 위해선 editThis cookie를 다운 받아도 되고, 그냥 코드보기에서 application부분의 쿠키로 가서 바꿔도 된다. 이렇게 바꾸고 새로고침을 한다. 더보기
webhacking.kr(old) 54번 54번에선 저 빨간색 부분이 바뀌다가 결국 마지막엔 ?로 바뀐다. 일단 script를 본다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=run(); function answer(i){ x.open('GET','?m='+i,false); x.send(null).. 더보기
webhacking.kr(old) 19번 19번에 들어가면 이렇게 id와 제출 버튼이 있다. 그대로 제출을 눌렀더니, 나보고 admin이 아니라고 한다. 근데 이건 다른 문제와 달리 길이제한이 있는 듯 하다. a를 누르고 제출했는데 이 화면이 떴다. logout을 눌러줬는데도 돌아가지진 않았다,,, 그래서 id=1을 넣어보았다. hello 1로 바뀐 것을 볼 수 있다! 그래서 좀 설레는 마음으로 id=admin을 넣어주었다. 아니라고 한다. admin 중간에 %00을 넣어보았다. 풀렸음을 확인할 수 있다! 더보기

반응형