전체 글

전체 글

    webhacking.kr : challenge 6

    소스를 보면 상당히 길다. 입력받는 id 랑 pw 값을 replace 함수에 의해서 바뀌는 거같다. id : guest pw : 123qwe str_replace 함수가 있는데 첫인자는 변경대상의 문자 두번째 인자는 변경하려는문자, 세번째 인자는 replace 가 바꾸고자 하는 문자열. 즉 1번째인자를 2번째 인자로 다 바꾼다는 뜻이다. 여기서는 기존의 숫자를 다 쉬프트 누른 값으로 바꾸는 거같은데 결론적으로 decode_id = "admin" , decode_pw ="nimda" 일 경우에 성공한다. val_id 랑 val _pw 의 경우 는 먼저 20번 인코딩하는데, base64로 한다. 또 setcookie 함수는 setcookie( 쿠키이름, 쿠키값, 만료시간, 경로, 도메인); 밑에 디코딩 있네..

    webhacking.kr : challenge 5

    회원가입과 로그인 버튼이 있다. 먼저 아무 아이디로 회원가입을 해보자 회원가입이 막혀있다. 그럼 로그인을 먼저 해보자 sql injection 같다. 로그인도 안된다. guest 로그인조차 되지 않는것 같으니 Blind sql injection 인가? 몰라 로그인이 안된다. login.php대신에 join.php를 쳤더니 들어가진다. 참 찍기의 영역이다. 코드가 난독화 되어있는데 복호화하면 다음과같다. l = 'a'; ll = 'b'; lll = 'c'; llll = 'd'; lllll = 'e'; llllll = 'f'; lllllll = 'g'; llllllll = 'h'; lllllllll = 'i'; llllllllll = 'j'; lllllllllll = 'k'; llllllllllll = 'l..

    webhacking.kr : challenge 4

    문제를 봅시다. 계속 바뀌는 코드가 주어지고, password를 입력해서 제출해야 하는 문제이다. Post 방식으로 입력된 key 라는 변수의 값과,(아마 pw 제출이겠지) Session 변수중 chall4의 값이 같으면 해결되는 문제이다. hash 변수는 10000000 에서 99999999 까지 한숫자를 고르고, 그 뒤에 salt_for_you 라는 문자열을 붙이는 것이다. Session['chall4']의 값은 hash 변수의 값이다. 또 sha1으로 500번 hash 변수를 해슁해주면 그게 최종적인 hash 변수의 값이다. 그리고 그 hash 변수를출력한게 화면에 나오는 값이다. random 숫자와 문자열을 붙인 값이 필요한 것이다. 문자열 값은 아니까 random 숫자만 파악해 볼수 있도록 하면..

    Misc : DNA

    Misc : DNA

    GTCATAATGCCGGGACTTGGT{ACATTC_CAGAAAAAAATT_GGCTATTCT} 해당 값이 flag 이겠다. flag 형식이 HackCTF 이기 때문에 ascii를 순서대로 대입한건가…? 싶어서 일일히 해봤는데 이상한 값이 나와서 아닌것 같았다. 순서대로 이루어지지는 않았던 것 같다. => 난 ATGC 순서로 줄 세웠는데 ACGT 순서였다. 그래서 이상하게 나왔나보네 그런데 구글링 해보니까 DNA 코드랑 알파벳이랑 대응시켜놓는 테이블이 있었다. 그럼 코드가 다음과 같이 나온다. GTC ATA ATG CCG GGA CTT GGT {ACA TTC _ CAG AAA AAA ATT _ GGC TAT TCT } TmowOFR{e0_saap_PZ4} 이게 Flag 형식과는 맞지 않는다. HackCTF..

    Pwnable : ROP

    Pwnable : ROP

    nc ctf.j0n9hyun.xyz 3021 Return Oriented Programming 이다. RTL chaining 과 GOT overwrite 를 잘 이용해서 해보도록 하자. 일단 main 문은 상당히 심플하다. int __cdecl main(int argc, const char **argv, const char **envp) { vulnerable_function(); write(1, "Hello, World!\n", 0xEu); return 0; } vulnerable_function()을 볼까? ssize_t vulnerable_function() { char buf; // [esp+0h] [ebp-88h] return read(0, &buf, 0x100u); } 일단 read 랑 wri..

    XCZ.kr : prob 22 (250pt)

    XCZ.kr : prob 22 (250pt)

    HxD로 파일 열어보면 adsegment file 이라고 한다. 뭔지 검색해보자. Access Data FTK Imager 를 이용해서 Dump 뜨면 생기는 파일이라고 한다. AD가 Access Data file 인듯 하다. 즉 확장자가 AD1이라는 것이다. ㅇㅋ FTK Imager 를 이용해서 파일확장자를 AD1으로 바꾼 뒤 열어보자 이렇게 덤프가 보인다. 한번 분석해볼까 먼저 로그 파일이 보인다. 어떻게 분석해야할까 로그 파일을 추출해서 REGA에 넣어보았다. 에러난다. 시스템 파일이 없어서인가보다…. 암튼 다 뻘짓이다….. 계속 돌아다니다가 GPS 관련된 파일을 찾았다. 레지스트리를 보려고 했던 이유도 위치 정보가 있지는 않을까에서였다. 이 gpsnote.net 뭔가 좀 수상하다 들어가보자. -> ..

    Root-me[web_client] : Javascript - Webpack

    Root-me[web_client] : Javascript - Webpack

    이번에 새로 나온 문제다. 이상한 사이트가 반겨주는데, 사실 사이 자체에서 취약점을 찾는데에는 실패했다. 소스코드를 봐도 이상한 점이 별로 없었다. related resource에서 보니 webpack 이라는 것을 이용한 문제인 것 같아서 webpack vulnerablities 를 검색해 보니 다음과 같은 CVE를 찾아볼 수 있었다. webpack 이 서버인가 보다. 여기서 소스 코드를 볼수 있다고 한다. 웹소켓 서버 자체에서의 취약점인가 보다. 소스 코드르 보니 Webpack:// 부분이 보인다. 저게 CVE 에서 명시된 ws:// 부분인가 보다. 그럼 저기에서는 소스 코드를 볼 수 있다는 뜻인 것 같은데 한번 확인해 보자. 소스 부분을 보니 저 사이트의 소스코드 전체가 노출이 되는 것 같다. 그래서..

    RTL_Core

    RTL_Core

    nc ctf.j0n9hyun.xyz 3015 32비트 환경이다. 한번 실행을 해보자. NX 가 걸려있는 것을 확인할 수 있다. RTL 을 사용하는 조건이겠지? 문제 이름이 RTL Core 이기 때문이다. 함수가 뭐있는지도 확인해보자. 중요해 보이는건 제목에 들어있는 core 함수와, check_passcode 함수가 중요해 보인다. 메인 문을 보자. int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+Ch] [ebp-1Ch] setvbuf(_bss_start, 0, 2, 0); puts(&::s); printf("Passcode: "); gets(&s); if ( check_passcode(&s) == has..