webhacking 180

chall.tasteless.eu Unsolvable, Never Trust The Obvious

Unsolvable. 들어가보면 admin으로 로그인하라고 한다. register을 통해 가입할수 있다.가입을 할때 성공적으로 가입하면 아이디 : 비밀번호 형식으로 잘 가입됬음을 알려준다. 처음에는 insert문에 인젝션하는거인줄 알고 아이디에 a','1234'),('admin','1234')# 이런식으로 입력을 해봤는데, 결과가 이리 나왔다. new user has been registered: a\',\'1234\'),(\'adm : 1234 뒤의 1234는 내가 입력한 비밀번호이고, 아이디를 살펴보면 20글자에서 잘렸음을 알 수 있다.그러면 아이디를 admin 1 (21글자)로, 비밀번호를 1234로 입력하면 어쨋든 아이디는 다르니까 admin이 안나오고, 가입시에는 20자리까지 즉 맨마지막의 1은..

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

chall.stypr.com YetAnotherSQL

들어가서 소스를 보면 ./index.php.bak 를 다운받아서 소스를 볼 수 있다.다운받아 보면 이전에 adm1nkyj님의 join문제와 소스가 거의 똑같다. 그런데 한번 더 꼬아놨다. 관련자료 : http://qkqhxla1.tistory.com/321 어쨋든 이 문서를 보고 컬럼 정보를 하나하나 알아내보자. id와 pw컬럼정보가 둘다 없으므로 id부터하나하나 뽑아보자. id = and (select * from (select * from user join user a) b)--+pw = \를 입력해보면 dkfHDdladkID 라는 아이디 컬럼이 나온다. 그럼 pw 컬럼도 뽑아보면.id = and (select * from (select * from user join user a using(dkfHD..

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 SimpleBoard

http://wargame.kr:8080/SimpleBoard/ 간단하다. 아무거나 눌러보면 http://wargame.kr:8080/SimpleBoard/read.php?idx=4이렇게 idx=4가 붙는데, 여기에 인젝션이 가능하다. 문제 힌트에는 union을 사용하라고 했지만그냥 블라인드 인젝션으로 풀었다. 소스를 보면 클래스가 두개 있는데, 이걸 읽으면서 어떻게 풀어라~라는게 bughela님의 의도같았지만.... 굳이 소스를 몰라도 풀수 있었다.(ㅠㅠ 죄송해요) ?idx=4 or 1=1%23 처럼 입력해보면 1이 나온다.?idx=4 or 1=0%23처럼 입력해보면 4가 나온다. 인젝션이 가능하다. ?idx=2 or (select ascii(substr(group_concat(table_name),1..

mysql 새발견, 5.7.5이상 에러기반 인젝션

구독하고 있던 rubiya님의 블로그에서 요상한 주석을 하나 발견했다. 그건 `인데..... ``사이에 쓰면 주석이 된다. 대충 용도를 확인할수 있다. 아마도 조금 공부해본 사람들은 '아하! /**/ 같은거구나'라고 생각하겠지만 이 주석은 중요한점이 있다. php환경과 같이 쓸 시에 그냥 ` 하나만 쓰면 #주석이나 -- 주석처럼 한줄주석으로 작동한다는 것이다!! 이건 실험용 코드인데(네이버 어딘가에서 가져옴.), get방식으로 받은 a가 컬럼명이 된다. 모든 컬럼을 가져오려면 *를 보내면 된다. 에러가 발생하면 그냥 종료되도록 해 놨기 때문에 에러가 발생하지 않고 잘 되는지 확인 가능하다. (참고로 매직 쿼터 옵션 등등 옵션은 본인이 알아서 할것) 이걸로 실험해보았는데.. 아래 스샷을 보면 알거다. 에러..

sql injection 문서.

출처.http://wh1ant.kr/archives/[Hangul]%20False%20SQL%20injection%20and%20Advanced%20blind%20SQL%20injection.txt 출처를 적어놨지만 문서 작성자님이 여기에 게시되기 원하지 않을 경우 바로 삭제하겠습니다. 나중에 지워질지 몰라서 문서를 통째로 가져왔다. ######################################################################### # # # Exploit Title: False SQL injection and advanced blind SQL injection # # Date: 21/12/2011 # # Author: wh1ant # # # ################..

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

hackthis Intermediate 1~5, main

Intermediate1.https://www.hackthis.co.uk/levels/intermediate/1?password=flubergump 2. # -*- encoding: cp949 -*- import urllib2 print urllib2.urlopen(urllib2.Request('https://www.hackthis.co.uk/levels/intermediate/2','password=flubergump',headers={'cookie':'PHPSESSID=od5o6n8f46ku2rsngtdg8h0tp3'})).read() 3.쿠키값 restricted_login=true 4. 5.??아이피 주소를 바꿔서 들어가는 문제? 인 것 같다. 학교에서 하고있는데 그냥 아무거나 입력해서 실패 후,..

webhacking/client 2015.03.19

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 45, 46

45. 그냥 바로 제출을 눌러보면http://webhacking.kr/challenge/web/web-22/index.php?id=guest&pw=guest 와 같은 url이 되고hi guest가 나온다. sqli라고 했으므로 id나 pw둘중에다가 잘 인젝션하면 될것이다.소스가 있는데 소스를 보면 $pw="?????"; if($_GET[id] && $_GET[pw]) { $_GET[id]=mb_convert_encoding($_GET[id],'utf-8','euc-kr'); $data=@mysql_fetch_array(mysql_query("select id from members where id='$_GET[id]' and pw=md5('$_GET[pw]')")); if(eregi("admin",$_G..

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 40

딱봐도 sql 인젝션 문제이고, 그냥 로그인해보면 http://webhacking.kr/challenge/web/web-29/index.php?no=1&id=guest&pw=guest 라는 url로요청이 간다. 로그인이 성공했다는 의미로 Success - guest가 뜬다. 소스코드가 없어도 인자를 보내는?no=1&id=guest&pw=guest 부분을 보면 guest가 들어가는 부분들은싱글쿼터가 씌워져 있을거라 예상할 수 있다. 그리고 webhacking.kr은 앞에서 말했듯이 매직 쿼터옵션이 켜져있어서 '를 입력해서 우회가 불가능하다. 그러면 no=1부분은 정수이므로 안 씌워놨을 수도있다고 가정해 볼 수도 있다.(요즘은 대부분 정수도 보안을 위해 ''를 씌워놓지만 그냥 숫자만 올거라고가정하고 안 씌워..

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

webhacking.kr 34, packer

소스보기로 보면 일반적인 암호화된 소스밖에 안보인다. 그런데 크롬 개발자도구를 이용해서 보면..? 맨 아래에 Passw0RRdd.pww 가 보인다. 패킹 도구중 하나로 p.a.c.k.e.r이란게 있다. 코드쉘에서 하나 가져왔다. eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]..

webhacking/client 2015.03.13