WriteUp

    webhacking.kr : challenge 14

    문제를 보아하니 기본적인 sql injection 문제같다. 근데 function을 보면 아닌거같다. function ck(){ var ul=document.URL; // 주소를 문자열로 반환 ul = www. ~ ul=ul.indexOf(".kr"); // ul = 18 ul=ul*30; // ul = 540 if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; } else { alert("Wrong"); } } 즉 540을 input으로 주면 풀리는 문제다 혹은 주소창에 ?ul*pw.input_pwd.value 를 넣어주면 되는데 이거는 계산이….ㅎㅎ 암튼 이정도로 끝

    webhacking.kr : challenge 12

    webhacking.kr : challenge 12

    javascript 난독화 문제다. 우선 난독화 해제부터 해보자. 콘솔창에 난독화부분을 복사해서 붙여넣기해주면 에러가 뜬다. ( function anonymous() { var enco=''; //var 는 변수선언 var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); // ck = / for(i=1;i

    webhacking.kr : challenge 8

    돌아가는 순서를 파악해 보고 뭐를 할지를 생각해 보자 agent 변수에 웹사이트를 접속한 CPU의 웹브라우저 정보를 저장 ip 에 접속자의 ip정보를 저장 agent 변수에 from 이라는 값이 있으면 필터링. -> access denied db 변수에 db연결정보저장 count_ck 변수에 array 값 가져온거 저장 배열의 0번째 인덱스의 크기가 70 이상이면 -> delete from chall8 뭘 지운다는 건지 모르겠다. result 변수에 query 저장 ck 변수에 result 에 대한 arr 가져옴 ck 변수의 값이 존재한다면 hi _____ 출력 ck[0]이 admin이면 문제 해결 ck 변수에 값이 들어있지 않다면 done! 출력 q 변수이용해서 정보 집어넣거나, query error ..

    webhacking.kr : challenge 7

    Admin page 딱 써있고 auth 라는 버튼이 있다. 소스를 보자 val 이라는 변수를 get 방식으로 가져오고 go 변수에 저장 아무값도 안넣으면 초기값으로 돌아가고, 필터링해서 go 변수에 2,-, +,from , _ , = , \\s, \*. \ 가 있으면 access denied!가나옴 이외의 경우에는 db에 접속한다. 접속할 때 rand라는 random 변수에 들어가는데 ( )의 개수가 다른거 빼고는 다 똑같다. 저거를 이용해야 하는 문제겠지. 어느 rand를 가져오던지 result 값을 가져오게 되어있다. 그걸 data 변수에 저장한다. data[0]이 1인 경우에 alert 창으로 Access_Denied가 뜨고, data[0]이 존재하지 않으면 나가고, data[0]이 2인 경우에 문..

    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 뭔가 좀 수상하다 들어가보자. -> ..