이번 글은 DiceCTF 2024의 MISC, Web 문제들을 정리하였다. [ MISC ] misc/welcome dice{flag!} 단순 대회 룰 숙지 겸 문제이다. misc/survey 설문이 끝나면 플래그 값이 있는 링크를 준다. [ Web ] web/dicedicegoose 문제 페이지로 이동하면 위와 같은 사진이 나온다. wasd로 주사위를 움직일 수 있다. 소스코드를 확인하면 아래 코드를 볼 수 있다. 점수가 9점이어야 플래그를 알려준다. 또한 소스코드를 보니 history에는 player와 goose의 게임 내 이동 기록이 저장된다. 위 내용을 참고하여 9점에 게임이 끝나도록 아래와 같이 history에 값을 재설정해주었다. history = [[[0,1],[9,9]] ,[[1,1],[9,..
해결방법 Burp Suite를 실행시키고, Proxy → Proxy Settings → Import / export CA certificate 클릭 Export의 Certificate in DER format 선택 후 Next 클릭 인증서를 저장 할 위치와 파일명을 지정 후 저장한다. 이때 파일의 확장자는 .crt로 저장한다. 저장한 인증서를 더블클릭하여 아래와 같은 창을 띄우고 인증서 설치를 눌러준다. 아래 사진들을 참고하여 순서대로 따라하면 된다. 크롬인 경우 설정 - 개인 정보 보호 및 보안 - 보안 - 기기 인증서 관리 클릭 저장했던 인증서 추가 여기까지 따라왔다면 이제 해결하고자 했던 부분이 해결된다.
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id의 값이 admin, pw의 값이 ‘’인 파라미터가 있다. query : select id from prob_dark_eyes where id='admin' and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () col if case when sleep benchmark addslashes() 함수를 사용하여 pw변수의 일부 문자열앞에 백슬래시(\)를 붙여서 반환한다. 싱글 쿼터('), 더블 쿼터("), 백슬래시(\), NUL(NU..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id의 값이 admin, pw의 값이 ‘’인 파라미터가 있다. query : select id from prob_iron_golem where id='admin' and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () sleep benchmark addslashes() 함수를 사용하여 pw변수의 일부 문자열앞에 백슬래시(\)를 붙여서 반환한다. 싱글 쿼터('), 더블 쿼터("), 백슬래시(\), NUL(NULL)에 해당한다. 문제를 풀..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id의 값이 guest, pw의 값이 ‘’인 파라미터가 있다. query : select id from prob_dragon where id='guest'# and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () 문제를 풀기 위해서는 id의 값이 admin 이어야 문제가 풀리는 듯 하다. 그런데 pw 값을 입력받고 있으나 앞에서 주석처리가 되고 있다. if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[pw]..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id의 값이 admin, pw의 값이 ‘’인 파라미터가 있다. query : select id from prob_xavis where id='admin' and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () regex like addslashes() 함수를 사용하여 pw변수의 일부 문자열앞에 백슬래시(\)를 붙여서 반환한다. **싱글 쿼터('), 더블 쿼터("), 백슬래시(\), NUL(NULL)**에 해당한다. 문제를 풀기 위해서는..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. pw의 값이 (’’), id의 값이 ≠‘admin’인 파라미터가 있다. query : select id from prob_nightmare where pw=('') and id!='admin' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () 또한 pw의 값이 6글자 미만이어야 한다. 문제를 풀기 위해서는 id≠’admin’의 값을 우회해야 문제가 풀리는 듯 하다. if(preg_match('/prob|_|\\.|\\(\\)|#|-/i', $_GE..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id, pw의 값이 ‘’인 파라미터가 보인다. query : select id from prob_zombie_assassin where id='' and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () addslashes() 함수를 사용하여 id, pw변수의 일부 문자열앞에 백슬래시(\)를 붙여서 반환한다. 싱글 쿼터('), 더블 쿼터("), 백슬래시(\), NUL(NULL)에 해당한다. 그 후 그 문자열은 strrev() 함수에 의해..
상단에 나오는 쿼리문은 DB에 해당 쿼리문으로 데이터가 들어간다고 알려준다. id, pw의 값이 ‘’인 파라미터가 보인다. query : select id from prob_succubus where id='' and pw='' 아래에는 php 코드가 나와있으며, 이걸 참고해서 문제를 푸는 것 이다. 해당 php 코드에서 자세하게 봐야 하는 부분은 이 부분인 것 같다. preg_match 조건문 부분을 보면 다음과 같이 필터링하고 있다. prob _ . () ‘ 문제를 풀기 위해서는 id의 값이 올바른 id어야 문제가 풀리는 듯 하다. if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match('/prob|_|\..