write up
-
[Misc] Big BadCTF write_up/Sunshine CTF 2019 2019. 4. 6. 01:11
파일을 열어보겠습니다. ↑ BigBad.png 해당 파일이 트리처럼 생겨서 트리 계산 하는 것인줄 알았는데.. 아니였습니다. 스테가노 툴인 Stegsolve를 이용해보겠습니다. 왼쪽의 바코드 모양에 2진 문자열이 있을것 같습니다. 그래서 위의 사진을 출력해서 solved.bmp라는 이름을 붙여놓겠습니다. 검은부분을 0 흰부분을 1이라고 하면 다음과 같습니다. 0000010100101101000010011010001010100011010101001100101000101100110001110111111001100111011111000000111100010010110011001111101010001100011111011 ↑ 2진 문자열 구한 python 코드 허프만 알고리즘에 대입하여서 flag를 찾을수 있습..
-
[Forensics] Golly Gee WillikersCTF write_up/Sunshine CTF 2019 2019. 4. 6. 01:10
golly_gee_willikers.txt를 확인해 보면 x , y , rule 이 적혀있습니다. 그래서 Golly가 무엇인지 찾아봣는데 좋은 사이트를 하나 찾았습니다. 굳이 프로그램 다운이 필요 없는 온라인 사이트!! https://copy.sh/life/ ↑ Golly사용 가능한 사이트 먼저 들어가서 Import로 값을 넣어줍니다. 이러한 값들이 나오는데 한번 어떤 의미의 rule인지 확인해 보겠습니다. `x` Represents `Width` `y` Represents `height` `o` Represents the `off cells` `b` Represents `on cells` `$` Represents `End of line` `!` Represents `End Of Pattern` 패턴의..
-
[Forensics] CastlesCTF write_up/Sunshine CTF 2019 2019. 4. 6. 01:09
파일을 hex값으로 열어보면 다음과 같습니다. hex의 주소값이 매우 크고 아래에 숨겨진 키가 있는데 이는 F2I and A1S라고 합니다. 일단 주소가 매우 큰것으로 보아 숨겨진 파일이 있을것으로 생각됩니다. binwalk 명령을 통해서 파일을 뽑아내겠습니다. 파일을 출력하겠습니다. 4개의 성과 하나의 마리오 사진이 있습니다. 마리오 사진을 보면 문을 열기 위해서는 key가 필요하다고 합니다. 아까 얻은 힌트로는 F2I and A1S 이것이 있습니다. 일단 저사진들이 있었던 파일인 Castles.001의 hex를 보겠습니다. 모든 성사진은 jpg로 되어있어서 시그니처값은 FF D8입니다. 첫번째 오프셋에 사진이 하나가 있습니다. 확인해보니 해당 사진은 Castelo_da_Feira.jpg 입니다. 두번..
-
[Reversing] Patches' PunchesCTF write_up/Sunshine CTF 2019 2019. 4. 6. 01:07
파일을 gdb로 열어보면 다음과 같습니다. flag로 점프 하라고 합니다. gdb로 파일을 열어 보면 위와 같이 나오는데 분기점이있는 main+39가 가장 중요한 부분인것 같습니다. jne에서 조건이 성립 되면 main+134로 점프하게 되는데 pop 하는 끝나는 부분으로 가는 분기점입니다. 그렇다는 것은 jne에서 점프를 main+41으로 해야 한다는 것입니다. 그렇다면 main+39에서 브레이크포인트를 걸고 실행을 시킨뒤에 점프를 main+41로 하면 될거 같습니다. Flag : sun{To0HotToHanDleTo0C0ldToH0ld!}
-
[Lord of SQL_injection] #21 iron_golem$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 01:03
이번 문제부터는... Hello admin이 출력하지 않습니다. 출력해주는것은 mysql_error()났을때 나오는 것입니다. mysql_error()을 일으키는법은 서브쿼리를 이용해서 단일행 서브쿼리, 다중행 서브쿼리, 다중열 서브쿼리 이라는 것이 있는데 다중행 서브쿼리에 단일행 서브쿼리 를 서브쿼리로 넣으면 다르기 때문에 에러가 난다고 합니다. if문을 이용한 서브쿼리 , case를 이용한 서브쿼리 등을 이용하면 에러를 만들수 있습니다. ?pw=' or id='admin' and if(length(pw)=길이 값,(select 1 union select 2),1)%23이라고 작성을 하면 됩니다. 여기서 select 1 union select 2는 2개의 필드를 출력하는 것인데 에러에 출력되는 값을 보..
-
[Lord of SQL_injection] #19 xavis$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 01:00
문제를 보고 19단계인데 왜이리 쉽지라는 생각이 들었다. 필터링은 like와 regex뿐이고 똑같은 평범한 blind sql injection이네 라는 생각이 들었다. 그래서 저는 바로 참값을 확인해 보았다. 바로 코드를 실행해 보았습니다. 해당 코드의 결과 값으로 12가 나왔습니다. 하지만 값을 하나씩 알아보니 아예나오지 않습니다. 그래서 다음과 같이 각자리의 값의 길이가 몇인지 알아보았습니다. 오잉..? 첫자리의 길이가 4라고 합니다. 이를 보고 저는 아? hex값일수도 있겠구나 라는 생각을 하게 되었습니다. 그렇다면 pw는 총 3자리의 문자열이고 총 길이 12가 나온 이유는 아마.. 4 * 3 이지 않을까 라는 생각을 했습니다. 그렇다면 코드를 수정해 보겠습니다. 모든 pw변수에 hex()를 붙여서..
-
[Lord of SQL_injection] #18 nightmare$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 00:58
새로운 방식의 문제가 나온것 같습니다. pw의 길이는 6문자이고 pw의 파라미터로만 입력을 하는것입니다. mysql에서 문자열과 0을 비교했을때 항상 참을 반환한다는것을 알게 되어있습니다. 이름 Mysql의 auto type cast라고 하는데 string의 column값을 int형과 비교를 하게 되면 string은 항상 0을 return 하게 됩니다. 그래서 해당 리턴값과 0을 비교하게 되면 항상 참을 반환하게 되는 것이지요 정확히 6글자 여야 하기 때문에 #과 -가 필터링된 주석처리문제는 %00으로 대체 하겠습니다 ?pw=')=0;%00