ctf笔记

文件上传

文件上传黑名单过滤ph或者白名单图片则只能寻求配置文件,如.htaccess和.user,ini。

  1. .htaccess上传时不能加GIF89a头绕过验证,因为会解析错误。.user.ini可以加

SQL注入

  1. 联合查询不存在的数据时会构造一个虚拟数据,符合认证时会登录成功
  2. 空格和/**/被过滤时,用()包裹函数会在两边生成空格,如(select(database()))可以在两边自动加空格,但(10)这种不行,这种绕过方式也需要符合语法。
  3. mysql过滤select没过滤分号可以用show和handler
  4. sqlite使用sqlite_master进行注入
  5. 文件上传时可以利用文件名进行注入

代码审计

  1. is_numeric()最后加%20,返回false
  2. 测试敏感词过滤可以使用linux下的wfuzz

如:使用fuzzdb的specialchars.txt判断过滤字符(但是我感觉没有seclists好用,500M的字典)
specialchars

  1. git泄露可用gitHacker,url/.git可以检测git是否泄露
  2. assert断言可以实现命令执行

MD5

  1. md5($pass,true),$pass=ffifdyop,md5后为’ or '6xxx,用于sql绕过

文件包含

  1. 伪协议
    在php://filter里的base64-encode被过滤的情况下,用到convert.iconv.* 死亡绕过

RCE

目录分隔符被过滤,可以用八进制编码
在这里插入图片描述
preg_replace在pattern带/e模式下可命令执行

ssti入门:https://www.freebuf.com/column/187845.html
ssti绕过:https://www.cnblogs.com/20175211lyz/p/11425368.html
Tornado render 模板注入,tornado的cookie_secret可以通过handler.settings,也可以使用handler.application.settings来获取
ssti快速构造payload:https://www.cnblogs.com/bmjoker/p/13508538.html

其他姿势

当 CURLOPT_SAFE_UPLOAD 为 true 时,如果在请求前面加上@的话phpcurl组件是会把后面的当作绝对路径请求,来读取文件。当且仅当文件中存在中文字符的时候,Django 才会报错导致获取文件内容。(也就是@文件名读文件)
在disable_function禁掉了system、shell_exec()此类命令执行的函数时,虽然穿上了马,但是不能进行交互shell,可以利用LD_PRELOAD环境变量突破disable_function限制。唯一条件,PHP 支持putenv()、mail() 。利用方式为:

/bypass_disablefunc.php?cmd=cat /flag&outpath=/tmp/tmpfile&sopath=/var/www/html/bypass_disablefunc_x64.so 

其中bypass_disablefunc.php和bypass_disablefunc_x64.so需要上传,并且so文件需要为绝对路径,cmd传参为命令执行结果

cookie伪造:jwt伪造可用jwtpycrack解密,https://jwt.io/#debugger生成JWT
ssti特殊字符绕过:http://www.fhdq.net/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值