본문 바로가기

Wargame(hacking)/webhacking.kr

(51)
Webhacking.kr : old-48 Write-Up 해당 페이지 접근 시, 위 그림 1과 같이 파일 업로드 기능과 memo 기능 그리고, 이전에 작성된 글과 그림이 출력되어 진다. 우선, 태그 및 기타 태그 삽입을 시도했었다. 그 결과는 아래와 같다. 1234 HTML Entity Encoding 이 적용되어, XSS 공격이 시행될 수 없다. 그럼에도 불구하고, XSS 공격을 계속 시도하였다... SVG image를 이용한 XSS를 시도했는데, 그 결과는 아래와 같았다. 페이지에 출력되는 그림이 ./7.jpg 이므로, file upload와 path_traversal과 svg_xss를 이용해 스크립팅을 일으키고자 했다. 실패했고, HTML Entity Encoding 또한 적용되어서 실패할 수 밖에(?) 없었다. 결국 다른 W..
Webhacking.kr : old-34 Write-Up 문제에 접속 하면 아래 그림 1과 같이 alert() 창이 발생한다. 해당 서버의 코드를 살펴보니, 보기 어렵게 구성된 여전히 이를 해석하기에는 힘들다. ( 하다가 안될 것 같아서.. 그만뒀다.. ) 처음 페이지에 접근 했을 때, alert()가 발생했는데, alert()가 발생한 위치로 가보도록 한다. if (location[b('0x19', 'iUmC')][b('0x1a', '6]r1')](0x1) == b('0x1b', 'RLUb')) location[b('0x1c', '4c%d')] = b('0x1d', 'llaF'); else alert(b('0x1e', '14cN')); 위와 같은 코드를 볼 수 있다. 해당 코드를 그대로 console 창에 입력 시, "debug me" ale..
Webhacking.kr : old-60 Write-Up
Webhacking.kr : old-11 Write-Up 해당 문제는 아래의 정규 표현식에 맞춰, val 값을 request하면 해결할 수 있다. $pat 에 해당 하는 정규표현식 패턴은 아래와 같이 해석될 수 있다. [x-z] : range를 표현하며 x ~ z 사이의 문자를 의미한다. ( 하이픈(-)은 두 문자 사이의 범위(from - to)를 의미 ) x{n} : 반복을 표현하며 x 문자가 n번 반복됨을 의미한다. \t : tab 을 표현하며 탭 문자를 의미한다. . : 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X * : 직전 문자 0번 이상 반복 최종 정답은 아래와 같다. ?val=2abcde_.119.203.7.102.%09p%09a%09s%09s +plus ?val=2cabcc_.....119.203.7.1..
Webhacking.kr : old-07 Wrtie-Up
Webhacking.kr : old-21 Write-Up 처음 접근했던 방법 ( Fail ) ?id=1'+or+1%3d1+and+sleep(2)%23&pw=1 ?id=1'+or+1%3d1+AND+if(1%3d1,sleep(3),false)%23 위 payload를 통해, Time Based SQL Injection의 가능성을 보았다. ?id=1'+or+1%3d1+and+length(database())%3d10+and+sleep(5)%23&pw=1 위 payload로 db의 길이를 구할 수 있었다. ?id=1'+or+1%3d1+and+substring(database(),1,1)%3d'w'+and+sleep(5)%23&pw=1 ?id=1'+or+1%3d1+AND+if(ASCII(SUBSTRING(database(),2,1))%3d101,+sle..
Webhacking.kr : old-12 Write-Up 해당 코드를 aadecode 실행하니, 아래와 같은 코드가 출력되었다. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i
Webhacking.kr : old-41 Write-Up 해당 페이지는 파일 업로드 기능이 존재한다. 하지만, 업로드 후, 업로드 된 파일의 위치는 파악할 수 없고, 파일이 업로드 되었다는 "Done~" 메시지만이 출력될 뿐이다. 그림 2와 같이 빈 파일을 업로드해보았고, 아래 코드에 의해 에러메시지가 출력되었다. error_reporting(E_ALL); ini_set("display_errors", 1) 위 그림 2의 에러 메시지로는 별다른 정보를 얻지 못하였고, 다른 에러 메시지의 출력을 유도하기 위해서, 파일명을 길게 하여 에러를 발생시켰다. 그 결과는 아래 그림 3과 같다. 255글자의 파일명 까지는 에러 메시지가 출력되지 않았고, 256글자를 입력 하자 오른쪽과 같은 에러 메시지가 출력되어 upload_dir이 노출되었다. 위 그림 ..