[HackCTF] Unexploitable #2
2021. 5. 23. 20:31
Wargame/HackCTF
문제 NX 만이 걸려있다. unexploitable#1 처럼 입력을 받고 끝낸다. 다만 이번에는 함수이름 문자열 .dynstr 을 이용해서 sh 을 구하진 못할 것으로 보인다. fgets 입력 시 bof 가 발생한다. 이번엔 fflush 문자열이 존재하지 않기에 fgets를 통해 binsh을 bss영역에 넣거나 fwrite를 통해 주소를 leak 시키려고 했다. 그런데 마땅한 가젯을 쓸 수 없었다. 이때, system 함수를 통해 got 주소를 leak 할 수 있었다. system 함수 인자로 명령어가 아닌 것을 줬을 때 에러 메시지가 출력된다. 이를 이용해 system 함수 인자로 특정 libc 함수 주소를 주면, 에러 메시지가 출력되며 그 내용을 출력해줄 것이다. 이것을 leak 해서 libcBase..
[HackCTF] Unexploitable #1
2021. 5. 23. 18:56
Wargame/HackCTF
문제 NX 만이 걸려있다. 기본적인 RTL 문제인 것 같고, 실행을 하면 입력을 받고 끝낸다. 입력을 받을 때 bof 가 발생한다 -> ret 변경 가능 필요한 것들을 구해보자. system@plt system 함수의 plt 가 존재한다. "sh" 주소 binsh을 구해서 bss 영역에 넣자고 하니 상당히 귀찮아서, 위의 fflush 문자열을 구했다. "sh" 부분을 system 함수의 인자로 넘기면 될 것 같다. 알파벳 당 한바이트씩이니 sh 시작 주소는 4003BF 이다. 가젯 익스플로잇 system@plt 주소를 알고 있었고, "sh" 도 문자열을 통해 구할 수 있었기에 기본적인 RTL로 풀 수 있는 문제였다!
[Webhacking.kr] 33번
2021. 5. 18. 15:03
Wargame/Webhacking.kr
PHP 문제 33-1 Get 방식으로 'get' 파라미터 값으로 "hehe" 를 전달해주면 된다. 33-2 POST 방식으로 'post' 값을 "hehe"로, 'post2' 값을 "hehe2"로 전달해주면 된다. 33-3 GET 방식으로 'myip' 파라미터 값으로 자신의 ip 주소를 전달해주면 된다. 33-4 GET 방식으로 전달한 'password'의 파라미터 값과 현재 시간을 md5 해싱한 값을 비교한다. 시간을 넉넉히 잡아서 md5 해싱해서 넣어준 다음 새로고침을 계속 눌러주었다. https://awebanalysis.com/ko/md5-generator-online/ MD5 온라인 생성기 이 무료 온라인 도구는 MD5 해시 생성기로, 신용 카드 번호, 토큰, 암호 및 기타 민감한 정보를 데이터베..
[Webhacking.kr] 32번
2021. 5. 18. 13:53
Wargame/Webhacking.kr
쿠키 문제 클릭을 하면 투표가 되고, 자신의 아이디가 추가가 된다. 투표를 한 후에 또 클릭을 하면 you already voted 라는 alert 와 함께 거부된다. 확인해보니 vote_check 라는 이름의 쿠기 값이 있었고 ok 값을 지운 뒤 투표를 해보니 투표가 되었다. 투표를 할 때마다 vote_check 값을 ok로 설정해주고 그에 따라 투표 여부가 결정되는 것 같다. vote_check 쿠기를 차단시킨 뒤, 클릭을 통해 자신의 점수를 100으로 만들어주면 되는 문제였다.
[Webhacking.kr] 28번
2021. 5. 18. 01:14
Wargame/Webhacking.kr
파일 업로드 취약점 문제 ./upload/O7XO91oPbea4/flag.php 파일을 실행이 아닌 읽어들이라고 한다. -> 이 문제는 php 파일 형태의 웹셀을 업로드 하는 것이 아니라 .htaccess 를 이용한 php 실행 금지 를 통해 풀 수 있다. htaccess는 "hypertext access"의 약자이다. 아파치 같은 웹 서버에서 브라우저 같은 클라이언트에서 접근할 때 어떤 식으로 서비스를 제공할 지 결정하는 파일이다. 파일 업로드 디렉토리에 .htaccess 파일을 만들고 해당 파일에서 php 파일을 실행하지 않게 설정하면, 텍스트 파일로 인식하게 하여 소스코드를 텍스트 형태로 볼 수 있다. 참고 https://rootrator.tistory.com/119 https://developme..
[Webhacking.kr] 27번
2021. 5. 17. 23:00
Wargame/Webhacking.kr
SQL Injection 문제 정규표현식에서 필터링 되는 것들은 다음과 같다. # select ( (공백) limit = 0x 이 문제는 18번 문제와 상당히 유사하다. 다만, 정규표현식을 통해 limit 이 필터링 되서 똑같은 방법으로는 되지 않는다. 쿼리를 조작하여 앞의 조건문은 무시하고 원하는 쿼리를 통해 admin 을 갖고 오게끔 해보자. 0) or no like 2-- 이를 삽입하면 쿼리문 전체는 다음과 같이 작동할 것이다. select id from chall27 where id='guest' and no=(0) or no like 2-- )")) or die("query error"); 앞의 where id='guest' and no=(0) 에 해당하는 column은 없으므로 무시되고, 뒤의..
[Webhacking.kr] 26번
2021. 5. 17. 22:27
Wargame/Webhacking.kr
더블 인코딩 문제 GET 방식으로 id 파라미터 값을 받아서 urldecoding 한 후의 값이 "admin"이여야 하고, admin 을 그대로 입력할 시 필터링이 된다. urlencoding 표를 참고해서 admin 을 인코딩 시켰다. admin 을 디코딩 한 값(아래) 를 URL에 파라미터 값으로 넣어준다. %61%64%6d%69%6e 코드를 보면 preg_match 함수가 urldecode 앞쪽에 있어 영향을 받을 일이 없어보이는데 위와 같은 결과가 나타났다. 그렇다면 아마도 urldecode가 되기 이전에 자동적으로 디코딩이 되었기 때문에 preg_match가 동작한 것을 보인다. 웹 서버와 브라우저 사이에서 데이터 교환 시 브라우저는 폼에서 입력받은 데이터를 자동으로 인코딩한 값을 PHP서버로 ..
[Webhacking.kr] 25번
2021. 5. 17. 21:49
Wargame/Webhacking.kr
PHP wrapper 문제 주소창을 보면 get 방식으로 파일명을 받아와 (파일명).php 에 접속하는 것 같다. flag.php 에 접속한 모습 -> "FLAG is in the code" 라고 뜬다. php 코드 내에 flag가 존재하는 것 같다. 그렇지만, 서버 내에 존재하는 php 코드는 노출되지 않는다. 이때 php wrapper 을 이용할 수 있다. PHP는 입출력, 오류 파일 기술어 등에 엑세스 할 수 있는 다양한 I/O 스트림을 제공하는데 이것을 PHP Wrapper라고 한다. 이 문제에서 그 중 'php://filter'라는 wrapper를 사용할 것이다. php://filter의 경우, 서버 안의 문서들을 열람할 수 있게 해준다. (encode 또는 decode의 형태로) www.[웹사..