webhacking 180

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

새로 찾아낸 error based sql injection( >5.5 )

http://frostyhacks.blogspot.kr/2014/10/one-sqli-to-rule-them-all.html polygon에서 sql문 실행 가능함.mysql> select POLYGON(12.33 12.55,13.55; select id from prob;);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '12.55,13.55' at line 1+-------+| id |+-------+| guest || admin |+-------+2 rows in set (..

이전 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

WeChall Table Names, Table Names II, Order By Query

Table Names database_tablename 형식이 답. db = http://www.wechall.net/challenge/table_names/challenge.php?username=test' or if((select ascii(substr(database(),1,1))=32),1,'test')%23&password=test&login=login table = http://www.wechall.net/challenge/table_names/challenge.php?username=test' or if((select ascii(substr(group_concat(table_name),1,1))=32 from information_schema.tables where table_schema=d..

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

HACKER FACTORY 초급 1~8

http://www.hackerfactory.co.kr/ level 1,2,3 : 프록시로 전달되는 값을 잘 바꾸면 된다. 너무 간단해서 설명이 필요 없다. level 4 : 파일 다운로드 취약점인데 ../가 필터링되있다. 단순히 ../는 한번만 지워주는거 같으므로....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//temp/hacktory.txt 경로를다운받으면 된다. level 5 : 글을 읽으려고 하면 막혀있는듯 싶으나 단순히 history.back(-1);로 앞페이지로 되돌려보낸다.그러니 프록시로 history.back(-1);라인만 지우고 소스코드를 살펴보면 Utill.js라는 js 소스파..

webhacking/client 2015.07.31

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

Quine

Quine라는게 있다. 이번 jff3에서 rubiya님이 냈던 mbm2문제가 이걸로 푸는건데..... Quine라는걸 지금 처음 봤다.(휴.) 앞으로 ctf좀 자주 뒤적뒤적해봐야겠다. Quine라는건 자기 자신의 소스코드를 출력하는걸 뜻한다고 한다. https://en.wikipedia.org/wiki/Quine_(computing) 언제적 코드게이트인지는 모르지만 코드게이트에 이 문제가 나왔었고, 좋은 블로그에 풀이와 설명이 있어서 이해할 수 있었다. source : http://www.shysecurity.com/posts/SQLi-Quine SELECT $$ AS Quine $$ => REPLACE(REPLACE($$,CHAR(34),CHAR(39)),CHAR(36),$$) 이게 기본 형태이고 $$..

chall.tasteless.eu Tournament, Fred's cms

Tournament 한참을 삽질했다. 딱봐도 아래에 힌트가 쿼리로 나와있으니 sqli이고, name과 text를 입력받는것을 보아 insert문으로 들어가고, 대충 쿼리로 집어넣으면 될수 있음을 알 수 있다. 이것저것 가능한 경우의 수를 모두 대입해봤는데 별로 반응이 없었다. name에 \를 넣으면 text에는 어떤 값을 넣어도 출력이 제대로 안된다는걸 확인하고, name에 인젝션을 하면 된다고 생각했다.(text에는 \를 넣어도 제대로 출력된다.) name에 a',(select flag from level15_flag))#를 넣어봤는데 계속 실패했다. 한참을 고민하다가 이전에 풀었었던 http://qkqhxla1.tistory.com/368 의 아래문제(Never Trust The Obvious) 에서..

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

RedTigers Hackit 8,9,10

8. 전에 여기서 해봤으나 원인 모를 이유로 답을 못찾았었다. 이유를 알아냈다. locate함수는 위치를 반환한다. mysql> select * from prob;+-------+----------------------+| id | pw |+-------+----------------------+....| admin | 123 || admin | 008c5926ca861023c1d2 || admin | \123 |... 중략 mysql> select locate(char(48),pw) from prob;+---------------------+| locate(char(48),pw) |.... 중략| 0 || 1 || 0 |... 중략 숫자 0의 위치를 반환해보라고 할 경우, 아래처럼 첫번째 인덱스만 나타..

wixxerd.com Adjoined, Inserted, Who's the custodian? (sql programming)

Adjoined들어가서 sql문으로 테이블을 검색해볼수 있다. 각각의 테이블은 아래와 같다. 각각의 이름, 비밀번호, 역할을 출력하는게 목적이다. 간단한 sql 문제이다. 답은 아래에.. user_rolesIDROLEIDUSERID112231325444556643 usersIDPASSWORDUNAME15922B67C56DF1BA2339CB7FC43F9F29DAdmin2c55cbda26407b5d2650d530afd387eedCletus34155894047994994173745FBD8176A2ELarry41870180768DBF817D4A213060CFC7AE9Joe55F4DCC3B5AA765D61D8327DEB882CF99Linda684169a8d5b3289e8ece00d7735081b53Sarah ro..

mysql 레퍼런스 12 Functions and Operators 나머지

mysql 레퍼런스 분석 12 Functions and Operatorshttps://dev.mysql.com/doc/refman/5.7/en/index.html 의.12.2 Type Conversion in Expression Evaluation 부분 연구. https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html숫자+문자열시 자동으로 형변환이 된다. mysql> SELECT 1+'1'; -> 2 자동으로 형변환이 되는데 이것도 정밀도란게 있어서 다른 결과가 나올 수도 있다. mysql> SELECT '18015376320243458' = 18015376320243458; -> 1 mysql> SELECT '18015376320243459' = 180..

mysql 레퍼런스 12.1 Function and Operator Reference

mysql 레퍼런스 분석 12 Functions and Operatorshttps://dev.mysql.com/doc/refman/5.7/en/index.html 의.12.1 Function and Operator Reference 부분 연구. 12.1 Function and Operator Referencehttps://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html함수가 엄청나게 많은데 나중에 쓸수있을것같은건 따로 표시. 12.2 Type Conversion in Expression EvaluationNameDescriptionABS()Return the absolute valueACOS()Return the arc cosineADDDATE() /..

시간 기반 sqli 인젝션2

해킹공부에서 중요한 것 중에 하나가 창의력인듯 싶다. 이런 문제가 있었다. ... 중략 if(preg_match('/admin|and|or|if|coalesce|case|_|\./i', $_POST['uid'])) exit("No Hack ~_~"); $r = mysql_fetch_array(mysql_query("select id from member where id='{$_POST[uid]}'")); // if($r['id'] !== "admin") exit("1st sandbox"); $r = mysql_fetch_array(mysql_query("select id from member where no={$_POST[uid]}")); // if($r['id'] !== "admin") exit("2n..

mysql 레퍼런스 9. Language Structure

https://dev.mysql.com/doc/refman/5.7/en/index.html 의.9. Language Structure 부분 연구. 버전은 가장 최신의 5.7을 볼 예정.필요한부분은 차차 추가해나갈 예정. 9.1 Literal Values 9.1.1 String Literalshttps://dev.mysql.com/doc/refman/5.7/en/string-literals.html 문자열은'나 "로 둘러쌓인것.SELECT _latin1'string'; 처럼 character set을 설정해서 출력할수 있음.SELECT N'some text'; or SELECT n'some text'; or SELECT _utf8'some text'; etc.. mysql에서의 특별한 문자들.(아스키값 같..

WeChall The Guestbook, Blinded by the light, Addslashes

The Guestbook글을 써서 올릴 수 있다. 소스를 분석해보면. $playerid = gbook_playerID(true); // Current Player$userid = 0; # guestbook has no login yet.$time = time();$ip = gbook_getIP();$message = mysql_real_escape_string($message);$query = "INSERT INTO gbook_book VALUES('$playerid', $userid, $time, '$ip', '$message')"; 부분에서 취약점을 발견할 수 있다. 내가 입력한 $message는 필터링이 잘 되어있지만, playerid나 ip값은 다른 함수에서 얻어온다. playerid가 값을 얻어..

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