Go语言在参数传递中深拷贝浅拷贝的问题

Go语言深拷贝浅拷贝

最近在写代码的时候发现有一个bug,是跟深拷贝浅拷贝有关系的

之前看了
Go 语言设计与实现 – 面向信仰编程

已经讲的非常详细了,分为两种

传递过程中参数是int类型和数组

func myFunction(i int, arr [2]int) {
    i = 29
    arr[1] = 88
    fmt.Printf("in my_funciton - i=(%d, %p) arr=(%v, %p)\\n", i, &i, arr, &arr)
}

$ go run main.go
before calling - i=(30,[......]

继续阅读

S2-001

S2-001

复现

用了p牛的环境
https://github.com/vulhub/vulhub/blob/master/struts2/s2-001/S2-001.war

是一个很正常的表单
打开link学习一下


介绍就这么多

测试一下

-w361

submit一下

-w384

都变成2了 说明poc成功了

跟进

很明显就是-w425
这个标签的问题跟进一下

-w734

跟进TextFieldTag这个函数

-w626

再一级一级往上跟跟到
DoStartTag函数

-w889

在这里打个断点

-w756

一路跟到这里可以看到root的username和password是%{1+1}

-w784

跟到这里的时候发现页面刷新变为2了
this.mergeTemp[......]

继续阅读

shiro反序列化学习

shiro反序列化学习

最近国庆学习一下shiro的反序列化
用docker大法来远程调试
https://x3fwy.bitcron.com/post/use-docker-to-analysis-vulnerability?utm_source=tuicool&utm_medium=referral
-w1246
getRememberedIdentity处下个断点
跟进去
-w847
getRememberedPrincipals

-w865
getRememberedSerializedIdentity
在这里从cookie中获得rememberMe的值
convertBytesToPrincipal[......]

继续阅读

[java 反序列化] Commons Collections5,6反序列化漏洞

[java 反序列化] Commons Collections5,6反序列化漏洞

最新一直在做java的代码审计
无目的的挖洞让人好疲惫
为了让自己不能闲下来
不挖的时候觉得学习一下java的反序列化也是不错的
那么就从最开始的Commons Collections反序列化来学习

java的反序列化操作的函数

java有writeObject()函数可以来执行序列化操作

public class ser {
    public static void main(String[] args) throws Exception {
        String test = "ckj12[......]

继续阅读

sqlmap源码解析(二)

sqlmap源码解析(二)

init()

_basicOptionValidation

这里检查了所有的参数的正确性并给出使用建议
-w856

_listTamperingFunctions

这里有一个可以列举tamper 的方法=。=
以前居然不知道
-w848
-w651
可以找到用–list-tamper就可以打开
-w918
__priority__通过这个做标识符来匹配下面的介绍

_setTamperingFunctions

加载插件

首先判断文件存在不存在以及更改工作路径等事情
然后用内置函数import()将文件导入
-w540
在对插件的优先级进行判断

_setTrafficOutputFP

没想到sql[……]

继续阅读

sqlmap源码解析(一)

sqlmap源码解析(一)

打算写扫描器了 参考一下最经典的sqlmap来做
目录

主函数

在运行之前先运行了四个函数

dirtyPatches

修复了一个windows cmd下python的bug

checkEnvironment

检测了当前的运行环境

setPaths

将当前运行的环境设置为工作目录

banner

输出banner

cmdLineParser

然后通过这个来解析传入的参数
调用了一个optparse的库来解析参数

        parser.add_option_group(target)
        parser.add_optio[......]

继续阅读

[西湖论剑awd] web1

[西湖论剑awd] web1

打比赛的时候为了省时看到一个洞就直接打了然后权限维持就没仔细看,趁着有空看一下(主要拿分还是靠web2)
代码量并不是很大

解密文件

首先在libs里面可以看到经过了加密的
可以通过echo来解密出来
echo($ooo000($ooo00o($o00o)));
解密的一部分文件

lib_common.php

<?php
include "/var/www/html/config/config.php";

define('DEBUG', false);
define('ADMIN', false);
define('FLAG', null);
d[......]

继续阅读

西湖论剑线上赛 writeup

西湖论剑

太菜了最后只有18名
都怪我划水
还是得夸aris和liano太强了

WEB

web1

<?php
//index.php
$a = @$_GET['file'];
if (!$a) {
    $a = './templates/index.html';
}
echo 'include $_GET[\'file\']';
if (strpos('flag',$a)!==false) {
    die('nonono');
}
include $a;

hint :dir.php

//dir.php
<?php
$a = @$_GET['dir'];
if[......]

继续阅读

腾讯面试 TEG 安全岗

腾讯面试 TEG 安全岗

面试结束面试官跟我说我需要去恶补一下基础知识=。=
我就知道我凉了=。=
没想到问了这么多的基础

线程 进程 协程

进程是计算机资源分配的最小单位
线程是操作系统调度的最小单位
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程
协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。
协程的特点在于是一个线程执行,那和多线程比,协程有何优势?
极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;
不需要[……]

继续阅读

[ROP Emporium]ret2csu

ROP Emporiumret2csu陷入僵局的时候
想找wp的时候发现网上没有任何wp(可能是新题吧)
-w367

题目很简单就跟之前的题目一样有一个有问题的函数 pwnme

主函数

int __cdecl main(int argc, const char **argv, const char **envp)
{
  setvbuf(stdout, 0LL, 2, 0LL);
  puts("ret2csu by ROP Emporium\n");
  pwnme();
  return 0;
}

pwnme

void **pwnme()
{
  void **result; //[......]

继续阅读