webhacking/etc 54

PHP Object Injection

https://www.owasp.org/index.php/PHP_Object_Injection 해석, 정리. 추가.http://securitycafe.ro/2015/01/05/understanding-php-object-injection/ 여기도 좋은자료.따로 블로그에 정리해놓은게 없어서 정리.. php object injection은 어플리케이션 레벨의 취약점이며, 이것은 공격자가 code injection, sql injection, path traversal, application denial of service같은 악의적인 공격을 실행하도록 하는 취약점이다. 이 취약점은 유저의 입력이 unserialize()함수를 거치기 전에 적절하게 처리되지 않았을 경우 발생한다.php가 object seria..

webhacking/etc 2015.10.02

이전 ctf연구 (hack.lu)

https://wildwildweb.fluxfingers.net/ 여기 뒤적거리면서 쓸모있는정보 뽑아서 글씀. 2013 Pay TV 문제. (2010,2011,2012는 딱히 가져올게 없....)side channel attack을 이용하면 된다고 한다.이름은 되게 뭔가 거창해보이는데 간단하게 표현하면 sqli의 시간 기반 인젝션으로 보면 될듯하다. 관련 url : http://blog.acronym.co.kr/102hack.lu ctf를 뒤적거리다가 발견했다... 문제주소 : https://ctf.fluxfingers.net:1316/ 여기 들어가서 공격하는건데, 소스코드중에 js가 숨겨져있어 소스를 분석하다보면 /* + '&debug'*/ 로 주석처리된 부분이 있다. 개발자가 테스트하려고 만들어놓은것..

webhacking/etc 2015.08.22

php 취약 함수 관련

일반적인 취약한 함수.http://stackoverflow.com/questions/3115559/exploitable-php-functionshttp://web.securityinnovation.com/appsec-weekly/blog/bid/79067/Disable-Dangerous-Functions-in-PHPhttp://blog.naver.com/postmebi/90173864551등등 검색하면 많이나옴. 요런것도 있다.http://www.80sec.com/php-create_function-commond-injection-vulnerability.htmlcreate_function()으로도 쉘 실행시키는게 가능하다고 함. 서버 구성.(index.php) 아래처럼 보내보면 phpinfo()가 실행..

webhacking/etc 2015.08.21

byte flipping attack 문서 번역, 실습

http://resources.infosecinstitute.com/cbc-byte-flipping-attack-101-approach/문서를 읽어보다가 너무 좋고 예시까지 있는게 이것보다 마음에 드는 페이지를 발견하지 못해서 번역 작성해둡니다. (사실 제 공부목적도 있습니다.) 처음 본 사람이 읽어보면 좋을듯. (codegate 2015 web 400문제로 출제된 것도 byte flipping attack관련 문제였습니다.)몇몇 오번역 등은 댓글 적어주시면 수정하겠습니다. 늘 그렇듯이, 이 공격에 대해서 밖에 많은 몇몇 설명이 있습니다.(마지막에는 결국 references를 봅니다.)하지만 몇몇 지식은 적절하게 이해해야 할 필요가 있습니다. 그래서 여기에 제가 어떻게 작동하는지 한단계씩 설명하겠습니다...

webhacking/etc 2015.08.05

php wrapper (추가예정)

lfi하고 같이 조금 정리했었던거 : http://qkqhxla1.tistory.com/313 http://php.net/manual/kr/wrappers.php 참고. 종류. file:// — Accessing local filesystemhttp:// — Accessing HTTP(s) URLsftp:// — Accessing FTP(s) URLsphp:// — Accessing various I/O streamszlib:// — Compression Streamsdata:// — Data (RFC 2397)glob:// — Find pathnames matching patternphar:// — PHP Archivessh2:// — Secure Shell 2rar:// — RARogg:// — Au..

webhacking/etc 2015.07.28

chall.tasteless.eu Leetmore

소스코드가 되게 길어서 한참을 살펴봤다. sqli문제일줄 알았는데 딱히 sqli관련해서 취약점이 없었다.넣을수 있는 부분에는 md5로 변경해서 '로 감싸여진다. 어떻게할까 소스코드를 여러번 살펴보다가 발견했는데, 맨 아래에 웹사이트가 몇초만에 만들어지는지 microtime이 나와있다. 이걸 보고 레이스컨디션인가? 추측을 했다. 그리고 또 몇번 살펴보니 어디를 공격하면 될지 감이 왔다. $r = mysql_fetch_assoc(mysql_query("SELECT $convfrom FROM level13 WHERE login = '$login'")); if ($r[$convfrom]

webhacking/etc 2015.07.21

WeChall Training: PHP LFI, PHP 0817, Training: Register Globals, PHP 0819

PHP LFI../solution.php에 중요한게 많다는 설명이 있다. 그럼 이 페이지를 가져오면 된다. http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00끝부분에 html이 붙는건 널바이트로 지워준다. PHP 0817solution.php를 include하면 된다고 하는데... ? 그냥 주소를 써주면 통과. 의도가 뭔지 모르겠다. http://www.wechall.net/challenge/php0817/index.php?which=solution Training: Register Globalsregister global이 있다는 설정이다. 내부의 foreach ($_GET as $k => $v..

webhacking/etc 2015.07.06

overthewire natas 12, 13, chall.tasteless.eu Get Me Down

overthewire natas 12.파일 업로드 문제. 소스코드는 긴데 예시로 하나 올려보면 어떻게 동작하는지 알 수 있다. 내가 어떤 파일 이름을 올리던 랜덤.jpg로 파일을 업로드하는데 그 업로드요청을 클라이언트에서 한다. test.php를 만든 후 내부는 처럼 채워주고 보낼때 확장자를 php로 바꿔서 보내면 성공한다. overthewire natas 13.12번과 동일한데 exif_imagetype() 함수로 파일을 검사한다. 이게 뭔가 하니 이미지타입을 검사하는 함수라고 한다. 내가 올린 내부를 검사해서 이미지타입인지 검사한다는 소리이다. jpeg나 bmp 관련 문서를 참조해서 헤더를 만든 후 내부에 위의 include를 넣으면 된다. 근데 사실 문서봐도 모르는 인자가 많아서 아무거나 적당한 크..

webhacking/etc 2015.06.27

wargame.kr mini TBR

목적을 알기 위해 소스파일을 다운받아서 들여다보자. \mini_TBR\modules\_system\경로에 functions.php가 있는데, 중간에 get_layout()함수를 보자. function get_layout($layout, $pos){ $result = mysql_query("select path from _BH_layout where layout_name='$layout' and position='$pos'"); $row = mysql_fetch_array($result); $allow_list = ["./book_store_skin/head.html", "./book_store_skin/foot.html", "./reverted/h.htm", "./reverted/f.htm"]; if (..

webhacking/etc 2015.05.24

securitytraps.pl pre, Who am I?, StrCmp, Training, The Truth

http://www.securitytraps.pl/ pre level 1 : 소스보기에 password가 나오는데 크롬에서 f12눌러서 개발자도구로 read only부분을 클릭해서 value를 password로 바꾸면 된다. pre level 2 : 페이지 요청을 받을때 헤더중에 Pass: a290bWFwc2E= 라는게 있는데 딱봐도 base64이므로 디코딩해서 보내면 답 kotmapsa pre level 3 : 소스를 보면 javascript:if (document.getElementById('p').value.split('').reverse().toString() == unescape('%68,%61,%73,%6c,%6f')) document.getElementById('f').submit() 요런게..

webhacking/etc 2015.05.08

canyouhack.it script 1~3

jquery는 모르지만 javascript는 안다. 그리고 프로그래밍을 하다보니 대충 모르는 언어라도 소스가 어떤뜻인지 감이 온다. 1. javascript 2. # -*- encoding: cp949 -*- """ var a = "de9f8caa7ea6fe56830925a124d605d4"; var password = ""; for(var i = 0; i < 20; i++) password += a.substring((i%3),(i%5)+(i%3)); """ hash = "de9f8caa7ea6fe56830925a124d605d4"; password = '' for i in range(20): password += hash[(i%3):(i%5)+(i%3)] print password 3. # -*- e..

webhacking/etc 2015.05.02

canyouhack.it web based

http://canyouhack.it/Hacking-Challenges/Web%20Based-Challenges/ 1. ?page=Admin 하면 GetRequest 가 나옴. 2. isAdmin=0; 이라는 쿠키가 있는데 1로 바꾸면 됨. 답 : YummyCookies 3. robot이라는 문자를 본 순간부터... robots.txt가 떠오름. http://canyouhack.it/robots.txt로 가보면 http://canyouhack.it/Content/Challenges/Web/Web3p.php가 나옴. 답 : WeRobot 4. google.com을 갔다 와야 된단다. referer을 google.com바꾸면 됨. 답 : AskJeeves 5. 한참 헤맸는데 알고보니 sqli. http://..

webhacking/etc 2015.05.01

xcz.kr 33번

라고 DecryptUID 함수가 힌트로 주어진다. 이게 뭔가 하니 qkqhxla으로 가입 후 로그인해보면 userid라는 쿠키값이 하나 주어지는데 위의 함수에서 $_SERVER['REMOTE_ADDR']; 부분을 내 아이피 주소로 바꾸고, echo DecryptUID("userid쿠키값"); 형태로 집어넣게 되면 내 아이디인 qkqhxla이 출력된다. admin페이지로 들어가보면 내가 ADMIN이 아니라고 뜬다. 그럼 쿠키값을 변경해서 ADMIN에 맞게 하면 될거라고 생각했다. 이 말뜻은 결국 저 위의 DecryptUID()에 맞는 EncryptUID()를 만들어야 한다는 소리이다. echo DecryptUID(EncryptUID('ADMIN'));을 출력하면 ADMIN이 출력되야 한다는 소리이다. 거꾸..

webhacking/etc 2015.03.30

wargame.kr dun_worry_about_the_vase (오라클 패딩 어택)

문서들의 출처는 아래에 다 적어놨으나, 제작자님이 여기에 게시되길 원하지 않으시면 바로 삭제하겠습니다. 1. 관련 문서 (문서 내부에 출처가 있습니다. laughfool님.)2. 코드게이트 2012 외국팀 More Smoked Leet Chicken 의 풀이 보고서.http://mslc.ctf.su/wp/codegate-2012-quals-vuln-400/ 3. 연습 사이트http://x.ozetta.net/example.php 1) 코딩. # -*- encoding: cp949 -*- import urllib2, re from base64 import b64encode session = 로그인 유지용 세션값. 본인이 알아서 바꿀 것. def get_result(a, b): c = urllib2.quot..

webhacking/etc 2015.03.22

chall.tasteless.eu Sjukdom

easy. 바로 이전의 php wrapper글에서의 공부가 도움이 됬음. http://level11.tasteless.eu/index.php?file=php://filter/convert.base64-encode/resource=config.easy.inc.php hard. easy모드에서 php.ini의 속성을 확인 가능하다. # -*- encoding: cp949 -*- import urllib2, os req = urllib2.Request('http://level11.tasteless.eu/index.php?file=php://filter/convert.base64-encode/resource=php.ini') req.add_header('cookie','__cfduid=d9fabd7cfefe2f..

webhacking/etc 2015.03.20

php wrapper, LFI, chall.tasteless.se Double Agent, wechall RFI

http://php.net/manual/kr/wrappers.php 에서 자세히 더 알아볼 것...지식인에서 찾은 유용한 질답.http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=220731927 이번 코드게이트에서 LFI 관련된 문제가 나왔다는데 개인 사정상 코드게이트 참가를 못했다... LFI에 대해서는 지식이 조금 부족해서 잊어먹기 전에 여기다가 정리해놔야지..... 조건은 php.ini의 allow_url_include = On 이어야함. 관련 문서. leaveret의 한 팀원이 만들었다고 함... 문제될시 관련문서 삭제하겠습니다. 추가 예정. chall.tasteless.eu Double Agent dmbs335님의 포스팅에서 관련 문..

webhacking/etc 2015.03.16

webhacking.kr 47, 48

47.메일 헤더 인젝션이라는데 이런식으로 헤더를 만든다고 써있다. php의 mail함수를 찾아보면 mail함수.(‘1’,‘2’,‘3’,‘4’)1:보낼 주소, 2:제목, 3:보낼 내용, 4:헤더 라고 나와있다. 헤더에 Cc(숨은참조)나 To(보낼 사람) 헤더를 추가하면 설정된 이메일로 메일을 받을수 있다고 한다. 폼에는 아무거나 입력한 후에 파로스로 잡아서 라고 보내준다. 메일주소는 자기 마음대로.... 48. 파일을 업로드해보면 3글자가 넘으면 파일을 업로드할수가 없다고 한다. 아무거나 파일을 올리고 파일을 삭제할수 있는데, 삭제시 연산을 생각해보면 system("rm 삭제할 파일명"); 등으로 삭제할거라고 예상할 수 있다. 3글자이내에서 명령어를 실행시켜보려면 ;ls처럼 실행시켜보면 system("rm..

webhacking/etc 2015.03.14

webhacking.kr 42, 43, 44

42. test.txt파일만 볼 수 있는데 소스를 보면 ?down=dGVzdC50eHQ=로 링크가 걸려 있다.?down=뒤의 값은 딱 보면 base64같다. 이걸 디코딩해보면 test.txt가 나오는데, ?down=base64(받을 파일) 대충 이런 원리라고 추측해볼수있다. 우리가 필요한건 test.zip이므로이 문자열을 base64 인코딩하면 dGVzdC56aXA=가 나온다. ?down=dGVzdC56aXA=로 실행해보자.http://webhacking.kr/challenge/web/web-20/?down=dGVzdC56aXA=test.zip이 다운되고 zip파일이 하나 나오는데 암호가 걸려 있다. 브루트포싱 프로그램 하나 받아서 풀면금방 풀린다. 43. 가장 기본적인 웹셸 업로드 방법인데, .asp나..

webhacking/etc 2015.03.14

webhacking.kr 36, 38, 41

36. vi blackout 라고 힌트가 나와있다. 정전되었다는 소리인데 vi에서 작성중인 vi를 강제로 끄게되면 파일이름.swp로 남아있다. (ls -al이었나로 확인 가능.) 해당 파일을 보기위해서 index.php.swp를 입력해보면 안된다. 현재 폴더라는것까지 포함해 .index.php.swp라고 입력하면 나온다. 38. ddddd같은걸로 로그인하고 admin을 누르면 내 아이피 주소:dddddddd 로 나온다. ddddddd등으로 로그인했고, 그게 내 아이피 주소라는 뜻이므로 관리자 계정으로 글을 쓰려면 내 아이피주소 : admin등으로 입력되게 하면 되겠다. 프로그래밍시 \n가 개행 문자인데 로그에 집어넣어보면 그냥 그대로 들어가는걸 알 수 있다. 그러면 이제 asdfasfs(아무 숫자나 글자..

webhacking/etc 2015.03.13

hack this site Realistic missions 1~5, 7

1. Uncle Arnold's Local Band Review본인은 레이징 인페르노라는 그룹에 속해있고, 뭔가 복잡한 사정으로 빚을 값아야 한다고 함.1등을 하지 못하면 망한다고 1등으로 만들어달라고 함.투표하는곳이 폼으로 되어있는데 레이징 인페르노 쪽의 폼을 개발자도구로 value=99999999정도로 바꿔준 뒤에 투표하면 엄청나게 많은 표가 가게 되고 성공한다. 2. Chicago American Nazi Party인종차별이 심한 관리자가 있는데 관리자를 탈취해서 메시지를 남기라고 함. 들어가서 소스를 살펴보면 맨 아래에 update라는 링크가 있는데 들어가보면 로그인 폼 발견. ' or 1=1-- 처럼 가벼운 sqli해보면 그냥 통과됨. 3. Peace Poetry: HACKED평화로운 시 사이트..

webhacking/etc 2015.01.20

hack this site Basic 1~10

1. 소스보기 2. 해석해보면 패스워드 파일을 올리는 것을 무시했다고 한다(??) 아무것도 입력하지말고 버튼 누르면 통과. 3. 폼이 히든 속성으로 password.php 가 숨겨져있다. https://www.hackthissite.org/missions/basic/3/password.php들어가면 비밀번호있음. 4. 보안관리자인 샘 본인도 패스워드가 너무 어려워서 재설정기능을 넣어놨다. 찾아보면 Password: 라는 폼이 있는데 페이지를 다 다운받아서value값만 내 이메일로 바꾼 후 전송해서 비밀번호를 받으면 된다. 5. 4번하고 똑같은데 좀더 보안이 강화됬다고 한다. 그런데 그냥 크롬 개발자도구로 내 이메일 주소 바꾼다음에 보내면 된다. 4번하고 똑같다. 예상해보자면 아마 4번은 소스를 전부 다운..

webhacking/etc 2015.01.20

webhacking.kr 32, 33

32.투표하는 방식인데 맨 아래의 join을 누르면 내 아이디가 등록된다. 투표를 하면 vote_ok=ok라는 쿠키값이 추가된다. 쿠키를 지우고 노가다를 하던가 프로그래밍으로 하면 된다. import httplib, urllib, urllib2 form=urllib.urlencode({'id':'아이디','pw':'비번'}) req = urllib2.Request('http://webhacking.kr',form) res = urllib2.urlopen(req) cookie = res.headers.get('Set-Cookie') for i in range(0,100): req2 = urllib2.Request('http://webhacking.kr/challenge/codeing/'+\ 'code5.h..

webhacking/etc 2015.01.15