본문 바로가기

web/웹 해킹 및 보안

SSG CTF 2017[noitcejni] payload 및 후기



페이로드

payload.py


문제 소스 코드 및 문제 설명(payload/2017_ssg_noitcejni.pdf)

https://github.com/intadd/noitcejni




안녕하세요 올해에도 SSG CTF가 개최 되었습니다. !!!!!!!




저는 noitcejni[web 250]을 출제했습니다.



이름은 noitcejni (사람들은 다 notic jni 라고 생각하시더라고요 ㅠ) 하지만 noitcejni는 reverse("injection") 입니다. ㅋㅋㅋㅋ 그냥 제 페이로드에 reverse() 라는 mysql 함수를 많이 사용하기 때문에 이름을 이렇게 만들었습니다.





후기.

열심히 만들었는데 솔버가 0... 슬펐습니다.

사실 PHP magic 해쉬를 이용해서 간단한 문제를 만들어 볼까 했습니다만은, 작년에 선배님께서 문제로 출제 했다고 하시고 모르는 사람도 없을꺼 같아 넘겼습니다.  일단 가장 맘에 걸리는 것은 솔버가 0..... 1도 2도 3도 아닌 그냥 0입니다... 계속 로그를 보고 있었는데 ip 가 누적으로 10............... 10명 정도 제 문제에 들어 온거 같습니다.  타 동아리 ctf도 그렇고 bob 설명회도 겹쳐서 많이 참여하지 못한거 같아요 ㅜ.. 뭐 문제 구상부터 테스트까지 오랜 시간이 걸렸습니다. (약 한달)처음으로 ctf 문제를 출제하다 보니, 부족한 저만 보였습니다... 더 공부를 열심히 해야겠습니다.

도커 파일 만들다가 mysql 적용 못해서 탈주.. sql injection 을 pdo에 동적으로  받아서 취약점을 낼려고 했습니다.  ;` 을 주석 처리로 사용하게 할려고 했습니다. 알고보니  주석이 아니라 명령어 나누는 역할로 그냥 들어가더라구요...  그냥 바로 drop table ``넣으니까 바로 펑ㅇㅇㅇ하고 테이블이 날라갔습니다. ㅋㅋㅋ 그래서 서mysqli 로 바꾼 일화가.. ㅋㅋ





문제 컨섭은 sql injection 이였습니다. 트렌드와 그렇게 맞지는 않습니다. 그래도 제가 학생들에게 원했던 방향은 sql injection의 정의랄까.... (sql 문을 삽입한다.) 뭐 이런 의미를 각인시키고 싶었습니다. 필터를 우회 하기 위해 sql 함수를 이용할 수 있는지 + 8글자의 비밀번호를 100번의 쿼리 안에서 추출 할 수있는지. 등 이었습니다.

결론은 admin의 비밀번호를 2진수로 변환하여 비밀 번호를 추출하는 문제였습니다.


서버는 gcp 사용 했습니다.




문제는 정상적으로 풀립니다. ㅜㅜ