분류 전체보기

    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..

    LOS-rubiya : dark_eyes

    query : {$query}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_dark_eyes where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("dark_eyes"); highlight_file(__FILE__);?>pw 찾는 문제다.sleep _ prob ) . () 필터링 당한다. 이번에는 참 거짓 찾기가 어렵다.select 1 union select 2 를 이용해서..

    LOS-rubiya : iron_golem

    query : {$query}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_iron_golem where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("iron_golem"); highlight_file(__FILE__);?>pw 찾는 문제다 -> 파이썬 파일을 이용해서 질의 해줄 것이고, 이전에 사용했던 파일 재사용해서 쿼리 부분만 바꿀 예정이다.sleep _ prob ) . (..

    LOS-rubiya : dragon

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("dragon"); highlight_file(__FILE__); ?>입력은 pw로만 주고있는데, 주석이 앞에 있다. 개행해서 입력해주면 되겠다.%0a 이용하자. ?pw=1' %0a or id='admin'%23 이렇게 하면 guest로 로그인 된다. ?pw='%0a and id='admin' or id='admin'%23앞부분을 false로 만들어주고 하면 된다.

    LOS-rubiya : xavis

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_xavis where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("xavis"); highlight_fil..