본문 바로가기

HackCTF67

[HackCTF] (Web) Login 문제 로그인창이다. 특별한건 없고 소스코드를 보자 DB에서 아이디와 sha256로 암호화한 비밀번호가 맞으면 결과를 가져오고, Session id를 DB쿼리 결과로 바꿔서 welcome.php로 연결해준다. 만약에 직접 welcome.php로 들어가면 No login이 뜬다. 그렇다면 아이디와 비밀번호를 맞출수는없고, Sql 문이 참이되게해서 welcome.php로 이동하자 id='$id' and pw='$pw' id를 ' or 1=1# 로 넣어주면, id='' or 1=1# 'and pw='$pw' id 닫은 따옴표 다음은 주석처리가 되어 Sql문이 참이된다. 그러면 테이블에서 아이디를 가져와 Welcome.php 로 들어가서 FLAG를 볼 수 있다. 2020. 3. 9.
[HackCTF] (Reversing) Keygen 풀이 (No ida pro , handray) 문제를 다운받고 ida로 열어보자 [main] 0x41 (61) 만큼 입력을 받고, check_key로 확인한다음 맞으면 flag파일을 열어서 출력해준다. [cheak_key] 입력값이 10이상, 64이하 이면, 입력값을 encoding한다음 OO]oUU2U m[] var_C : 입력값의 길이 --> len var_10 : iterator --> i var_11 : 0x48 --> v 입력값 : s[] 0xEA0EA0EB : v2 저는 ida pro가없으니 이제부터 encoding루틴을 직접 handray해보겠습니다. 루틴은 4단계로 나눠서 설명해드릴께요 [ 반복문 ] while ( i < len ) [ First ] E1 = (s[i] + 0xC ) * v + 0x11 [ Second ] E2 = ( .. 2020. 3. 6.
[HackCTF] (Pwnable) Basic_FSB 풀이 문제파일을 ida로 열어보면 main함수가 있다. main함수에는 특별한점이 없으니 vuln함수로 넘어가자 var_808 에 입력을 받고, snprintf로 var_408 에 400만큼 출력하고 printf 로 var_408 을 출력한다. 하지만 코드에는 이상한 점이 있다. 바로 (%s 나 %d 같은)서식문자를 사용하지않는점인데, 이점은 포멧스트링 버그(Format String Bug) 로 이어질 수 있다. 포멧 스트링 버그는 문자열을 입력받을때 사용자가 서식문자를 입력하면 그 서식문자에 따라 출력이 된다. 한번 문제서버에 서식문자를 입력해보자. AAAA %x %x %x %x 를 입력하면 그대로 출력되지않고 서식문자에 따라 16진수값들이 나오게된다. 이 16진수값들은 왼쪽부터 차례대로 스택에서 esp+4.. 2020. 3. 6.
[HackCTF] (Pwnable) Basic_BOF #2 풀이 먼저 문제파일을 아이다로 열어보면 입력은 ebp-8c 에 받고, ebp-c 를 호출하는걸 보면 ebp-c에 함수주소를 덮어써야 문제가 풀리는걸 직감적으로 알수있다. 그러면 무슨함수를 덮어써야할지 함수 리스트를 보는중에, 쉘함수를 실행시켜주는 shell 함수를 찾아냈고, 주소는 0x804849b 이다. 8C- C = 80h (128) 이므로 최종 payload = (python -c "print 'a'*128 + '\x9b\x84\x04\x08' ";cat) | nc ctf.j0n9hyun.xyz 3001 쉘을 얻고 cat flag를 할수있게된다. 2020. 3. 3.