dreamhack(57)
-
Carve Party 풀이
click the pumpkin to make a jack-o-lantern! 10000 more clicks to go! 위에 나오는 코드는 페이지에 들어가서 개발자 도구로 연 JS 코드입니다. 만 번을 클릭하면 FLAG가 나오는 형식인 것 같습니다. 만 번을 다 클릭할 수는 없으니 개발자 도구 콘솔 창에서 JS 코드를 실행시키겠습니다. make() 함수에서 호박을 지칭하는 것을 찾아보니 '#jack-target'이였습니다. while문으로 이 부분을 9999번 클릭하게 만들고 마지막 한 번은 직접 눌러보겠습니다.
2021.11.18 -
dreamhack-tools-cyberchef 풀이
뭔가 인코딩 된 것 같은 문자열이 보입니다. 아래에 암호를 만든 절차가 나와있는 것 같습니다. 그렇다면 이를 거꾸로 해서 Base64 -> Rail Fence로 디코딩하면 원래의 문자열인 FLAG가 나올 것 같습니다.
2021.11.18 -
simple-ssti 풀이
우선 URL 뒤에 /{{4*4}}를 입력해보겠습니다. 문제 이름 자체가 SSTI니까 예상대로라면 /16이 화면에 출력될 것입니다. 코드를 보니 app.secret_key에 FLAG가 들어있다고 되어있습니다. 아무래도 app.secret_key의 값을 화면에 출력시키면 FLAG를 얻을 수 있을 것 같습니다. (+ app.secret_key에 들어있는 정보들을 보려면 URL 뒤에 /{{config}}를 삽입하면 됩니다.) 이번 문제는 점수에 비해 좀 많이 헤맨 것 같습니다. flask 지식이 빈약해서 그런 것 같네요....ㅎ
2021.11.17 -
image-storage 풀이
Image Storage Home List Upload 파일 업로드 맨 마지막 코드는 upload.php인데 사진으로 첨부하기엔 좀 길어서 코드 블록으로 첨부해봤습니다. upload 페이지에서 웹쉘 취약점이 터지는 형식 인 것 같습니다. upload.php에서 php 코드 부분을 보니 별다른 필터링은 하지 않고 있습니다. 문제에서 FLAG는 /flag.txt에 있다고 했으니까 경로로 이동해서 FLAG를 획득하도록 하는 php 코드를 작성하겠습니다.
2021.11.17 -
rev-basic-7 풀이
이번 문제는 주어진 배열의 길이도 짧고 다 좋은데, __ROL1__이라는 것이 코드에 있습니다. 아무래도 맥락상 알고리즘이나 암호화 같은데.... 구글링을 한 번 해보겠습니다. https://namu.wiki/w/LEA [LEA - 나무 위키] 한 줄 요약 -> ROL은 왼쪽 방향 쉬프트 연산이다 [if문 조건식] i^__ROL1__(flag[i], i&7) != arr[i] ROL이 무엇인지도 알았으니 이제 역연산 코드를 짤 수 있을 것 같습니다. 이번에도 브루트 포스 방식으로 if문 조건식을 구현하면 될 듯합니다. #include #include using namespace std; int w; int arr[32]={0x52,0xDF,0xB3,0x60,0xF1,0x8B,0x1C,0xB5,0x57,0..
2021.11.10 -
rev-basic-6 풀이
sub_140001000()에 있는 조건식을 보기 편하게 정리해서 써보겠습니다. byte_140003000을 arr, byte_140003020을 brr, 사용자가 입력한 배열을 flag라고 정의하겠습니다. [if문 조건식] brr[flag[i]]!=arr[i] 저 if문을 다 통과하면 Correct가 출력되므로, 저 조건식을 피해 가는 경우를 계산하면 되겠습니다. brr의 인자 수가 너무 많으니 브루트포싱으로 돌려가며 푸는 게 좋을 듯합니다. (+ 변수 하나를 생성해서 인덱스를 세어주도록 하면 될 것 같기도....) #include #include using namespace std; int arr[]={0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0..
2021.11.03