목록Hacking (16)
dohki
SECUINSIDE CTF Quals 2016에 참가 했는데 마지막에 ownmyweb을 계속 잡고 있었다. web part까지만 풀었기 때문에 완전한 풀이도 아니어서 그냥 여기에 쓴다. ebmoon이 XXE injection이 된다는 것을 알려 줘서 거기에다 php filter wrapper만 추가해서 index.php를 빼내었다. flag.php에는 fake flag가 있었고... (ㅂㄷ) index.php는 더 이상 볼 게 없어서 접으려고 했다. (secret_comment 같은 낚시 따위 걸리지 않아 주겠어...) hint가 shell을 얻으라는 거여서 expect 같은 다른 php wrapper들로도 시도해 보았지만 enable되지 않은 듯 하였다. 옛날부터 다른 CTF에 참여 하면서도 궁금한 게..
Description This blog on Zombie research looks like it might be interesting - can you break into the /admin section? Write-up 접속해서 우측 상단에 위치한 Admin button 을 눌러보니 #err-user_not_found 를 url에 붙여준다. cookie 이름과 cookie 값을 base64 decode 한 값을 본 후에 바로 이 값이 python pickle module 을 이용해서 dump 한 data라는 것을 알 수 있었다. data 는 다음과 같은 dictionary 였다. 그래서 단순히 None을 'admin' 으로 치환하고 pickle 로 dump 한 뒤 base64 encode 한 값을 ..
Description Can you hack this website? The robots.txt sure looks interesting. Write-up Description 이 제발 robots.txt 을 확인해 달라고 애원하는 것 같아서 확인해 주었다. 그냥 접속하면 이런 문구가 떠서 임의의 id로 가입을 했는데, 주는 cookie 이름이 대놓고 md5-hash 였다. cookie 값이 그냥 가입한 id의 md5 hash 여서 'admin' 의 md5 hash 로 저장하고 다시 /admin에 접속 했더니 flag를 주었다. Flag CTF{renaming-a-bunch-of-levels-sure-is-annoying}
Description Shake Shake!! Write-up 대회가 끝나고 문제 서버를 바로 닫아 버려서 screenshot을 첨부할 수가 없다. 어차피 좋은 문제도 아니었으므로 대충 쓰겠다. 문제로 어떤 blog가 주어졌고 read.php?id=1 같은 형식으로 blog의 글을 볼 수 있었다. read.php?id=1aaa 같은 형식으로도 똑같은 글을 읽을 수 있길래 바로 id의 type이 int이고 where id='{$input}' 같은 query를 쓰고 있다는 걸 알 수 있었다. 그래서 read.php?id=1' and true-- - 같은 형식으로 blind sql injection을 할 수 있다. filter도 하나도 없어서 그냥 script 돌려서 뽑았다. 어떤 사람의 write-up을 보..
Description Legend! We make web a beautiful place. Write-up 거의 아무런 기능도 없는 site이다. 실제로 동작하는 무언가를 찾기 매우 힘들다. 그래서 오히려 대놓고 injection 부분이 보였다. news.php?newsid=1 newsid가 1, 2, 3, 4, 5, 6일 때 존재하는 글을 보여주었다. 처음에는 2-1나 1'-- - 같은 것들을 test 해보다가 안 되길래 포기했다. 한참 뒤 irc channel을 보다가 admin이 이 문제는 mongodb injection이라고 알려주는 걸 보게 되었다. 그리고 사람들이 처음에는 javascript error message가 나왔었는데 나오지 않는다면서 문제가 바뀌었냐는 불평을 하는 것을 보고, 바로..
Description Hit Hit Hit Write-up description이 되게 명확하지 않은데, $_GET['xss']를 통하여 alert나 prompt나 confirm을 실행할 수 있는 payload를 찾아서 그것을 증명하는 사진과 함께 mail을 보내면 flag를 준다. 등 다양한 문자가 _로 치환되고 on, alert 등 다양한 keyword가 공백으로 치환된다. payload가 injection되는 부분을 보면 꼭 tag를 하나라도 만들기 위해 의 사용이 불가피한 상황이었다. 그래서 맨 처음에는 'xss without angle bracket' 같은 걸로 googling을 했었다. 계속 attribute를 통한 XSS만 나오길래 일반적인 XSS는 절대 불가능할 거라고 생각하고 혹시나 해서..
Description People say, you're good at brute forcing... Have fun! Write-up 어떤 시각을 주고 어떤 hash를 주는데 '그 시각과 30초 오차 범위 내에 있는 시각의 timestamp:1 byte character'의 sha1 값이 주어진 hash와 같을 때 이 string을 보내주면 된다. 이 문제가 짜증나는 게 처음에는 timestamp라고 써주지 않아서 format을 헷갈리게 하고, 시각도 UTC가 아닌 CET로 줘서 삽질을 하게 했다. 31번 문제도 답이 맞는데 틀렸다고 해서 문의 했더니 그 뒤로 답을 더 구할 필요가 없다는 대답을 하는 것이다. 알고 보니 이 때까지 구한 글자들을 연결하면 flag라고... 아무튼 다음 code를 실행하면 ..
Description We all know that prime numbers are quite important in cryptography. Can you help me to find some? Write-up 어떤 자연수 n보다 큰 첫 번째 소수를 보내주면 된다. 다음 code를 실행했다. from pwn import * p = remote('188.166.133.53', 11059) primes = [] #list of prime numbers below 1000 (omitted due to readability) cnt = 0 while 1: cnt += 1 print cnt if cnt == 101: data = p.recvall() print data exit(0) data = p.recvun..
Description People either love or hate math. Do you love it? Prove it! You just need to solve a bunch of equations without a mistake. Write-up 어떤 자연수 a와 b에 대해서 어떤 사칙연산을 한 결과를 알려 주는데, 알맞은 a를 보내 주면 되는 문제이다. 다음 code를 실행했다. from pwn import * p = remote('188.166.133.53', 11027) cnt = 0 while 1: cnt += 1 print cnt if cnt == 101: data = p.recv() print data exit(0) data = p.recvuntil('\n') print data da..
Description I tried to download the flag, but somehow received only 404 errors :( Write-up 이상한 url로 접속하는 게 11번 있는데 그냥 url을 보다가 '.ctf.internetwache.org' 앞의 값이 hex 값인 것 같아서 다음 code를 짜고 실행했다. s = '' for i in range(11): dat = raw_input().split('.')[0] s += dat.decode('hex') print s 첫 글자만 읽으면 flag이다. Flag IW{DNS_HACKS}