write-up 33

h3x0r CTF

2017.01 h3x03 CTF SQLi 2 ".$query." "; $result = $mysqli->query($query); $result = @mysqli_fetch_array($result); if ($result['id'] === 'admin') { die($flag); } else if(isset($result['id'])) { echo "Hello {$result['id']}"; } } highlight_file(__FILE__); //made by ch4n3 ?> 필터링이 상당히 빡세다. u가 필터링되있어서 substr 등 못쓴다. order by, group 등 다 안된다.like, =, in 다 막혀있다. 쿼터도 막혀있다.쿼터는 hex로 우회하고, like는 XOR연산으로 우회한다. ..

write-up/CTF 2017.01.08

9번

http method GET, POST가 막혀있다.htaccess 등으로 limit 걸어놓은듯 하다. OPTIONS 등으로 우회해주자.크롬 extension 툴인 YARC (Yet Another REST Client)를 이용하였다. 필터링 목록이 꽤 빡쎄다.orand+unionselectasciichar 여기에다 공백까지 못 쓴다. %0a, %0b 모두 막혀있다.... ?no=1 ?no=3 예상할 수 있는 쿼리는 select id from table where no={$_GET[no]} if문과 substr을 이용해 한 글자씩 잘라냈다.그런데 문제는 쿼터와 ord함수, ascii함수를 못 쓴다. ?no=if(substr(id,1,1)like(0x61),3,0) ?no=if(substr(id,1,1)in(..

13번

우선 필터링 목록이 빡쎄다 union+-*_informationschema#and/charhexlimitasciigroup (group_concat, group by)= ?no=1일 때만 참이 뜬다.?no=0 or 1요래하면 쿼리 전체가 참이된다. 테이블 명과 컬럼 명이 주어졌으니, flag를 추출하면 된다. ?no=0 or length(flag)를 이용하여 flag의 길이를 알아낸다. 그러나 거짓으로 뜬다. (유추할 수 있는 쿼리는 select flag from prob13password where no={GET_[no]} 이며, 반환행이 1개일 때만 참으로 뜨는듯.)select ~ where no=0 or length(flag)는 참인데 거짓으로 뜬다. (flag길이가 0일리는 없으니, length(..

57번

$_SESSION[id]와, 입력받은 값, php변수($secret_key)를 테이블에 넣는다. 출력해주는 부분도 딱히 없는데, 이 $secret_key를 알아내야 한다. php변수값을 알아내는 방향으로 접근하면 답이 없다. 테이블에 있는 데이터를 추출한다는 방식으로 접근해야 한다. 우리가 이용할 수 있는 쿼리는 insert문 뿐이다. $_GET[se]부분에 쿼터가 없어서 인젝션이 가능해보인다. if문을 이용하여 time based sql injection공격을 했다. if(length(pw)>6, sleep(1), 0) length(pw)=10일 때 참이므로, 길이를 알아냈으니 이제 한 글자씩 추출해내면 된다. import urllib2 import time url = "http://webhacking..

51번

소스를 보면... 자세히 보면 md5함수의 두 번째 인자가 true이다.php의 md5함수는 두 번째 인자가 TRUE이면, 해시를 길이 16의 바이너리 형식으로 반환한다. 기본값은 FALSE이다.(PHP Manual : http://php.net/manual/kr/function.md5.php) $str = "129581926211651571912466741651878684928"라는 문자열을 예로 들면, md5($str)은 06da5430449f8f6f23dfc1276f722738이지만,md5($str, true)는 ÚT0DŸo#ßÁ'or'8이다. id에 admin, pw에 위의 문자열을 입력했다면 전체 쿼리는 select id from challenge_51_admin where id='admin'..