python数据结构
补充一个小知识
python 输入重定向为文件
import syssys.stdin = open("test.txt")
之后就可以直接从文件读入,不需要手动输入了
链表实现链表输入1 3 5 4 1 9 4 将其存储为链表格式
链表数据结构:
class ListNode: def __init__(self, x=-1): self.val = x self.next = None
创建链表,返回头节点 (尾插法)def creat_list(line:list) -> ListNode: root = ListNode() tail = root for i in line: temp = ListNode(i) tail.next = temp tail = tail.next return root.next
遍历链表def traverse_list(root:ListNode): ''' 遍历链表,没有 ...
thinkphp6.0漏洞分析
通过session写文件漏洞点位于:/think/session/Store.php
/** * session_id设置 * @access public * @param string $id session_id * @return void */public function setId($id = null): void{ $this->id = is_string($id) && strlen($id) === 32 ? $id : md5(microtime(true) . session_create_id());}
针对sessionid的校验不严
之后初始化session
保存session的过程: think/session/Store.php
/** * 保存session数据 * @access public * @return void */public function save(): void{ $this->clearFlashData(); $sessionId = $ ...
apache配置文件简单记录
一直不太清楚apache的配置文件,简单记录一下
/etc/apache2 下的文件
apache2.conf 是主配置文件,之后的 available 代表可用的, enable 代表已经启用的
sites-enabled 下
000-default.conf 文件规定了网站根目录
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this ...
星盟3月AWD比赛
又双叒叕的打了一次AWD比赛,简单地总结一下
web2直接读flag最开始放了web2,ssh连上去,d盾没扫出什么东西
然后开始一个个看(现在都流行不放shell,直接给flag的2333)
丢给群里的其他师傅开始写批量
import requestsimport report = [20180,20280,20380,20480,20580,20680,20780,20880,20980,21080,21180,21280,21380,21480,21580,21680,21780,21880,21980,22080,22180,22280,22380,22480]url = 'http://ip:{port}/login.php'for i in port: r = requests.get(url=url.format(port=str(i))) if r.status_code == 200: try: print(re.findall(r"(flag{.*})",r.text)[0]) ...
RMI入门
基础知识RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中,它的底层是由socket和java序列化和反序列化支撑起来的。
Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。
我们知道远程过程调用(Remote Procedure Call, RPC)可以用于一个进程调用另一个进程(很可能在另一个远程主机上)中的过程,从而提供了过程的分布能力。Java 的 RMI 则在 RPC 的基础上向前又迈进了一步,即提供分布式对象间的通讯。
如何找到类?类似DNS中域名和IP的对应关系,RMI中有一个 RMIRegi ...
汇编从入门到入土五
课后实验实验一assume cs:code,ds:data,ss:stackdata segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment dw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code endsend start
程序返回前,data段中的数据如下:
程序返回前,cs = 076C, ss=076B,ds=076A
code段地址如果为X,data段地址为 X-32, stack段地址为X-16
实验二assume cs:code,ds:data,ss:stackdata segment dw 0123h,0456hdata endsstack segment ...
汇编从入门到入土四
BX 寄存器在内存寻址的作用
mov ax, 2000Hmov ds,axmov bx,1000Hmov ax,[bx] ; AX=00BEHinc bxinc bxmov [bx],ax ; BX=1002inc bxinc bxmov [bx],ax ; BX=1004inc bxmov [bx],al ; BX=1005inc bx mov [bx],al ; BX=1006
最后得到的内存分布
loop指令的使用assume cs:codecode segment mov ax,2 mov cx,11s: add ax,ax loop s
cx 作为循环的计数器
计算乘法,123*236
assume cs:codecode segment mov ax,0 mov cx,236s: add ax,123 loop s mov ax,4c00h int 21hcode endsend
注意:在汇编程序中,数据不能以字母开头
g 指令可以直接执行到指定的位置
p 会自动重复直到 cx == ...
汇编从入门到入土三
从汇编程序开始assume cs:codesgcodesg segment mov ax,0123H mov bx,0456H add ax,bx add ax,ax mov ax,4c00H int 21Hcodesg endsend
伪指令
段名 segment段名 ends
end 和 ends 不一样, end标记整个程序的结束assume 将有特定用途的段和相关的段寄存器关联起来
程序返回
mov ax,4c00Hint 21H
编写代码,使用 MASM.exe 编译,然后使用 LINK.exe 进行链接
运行当然是没有结果的,我们需要使用 debug 调试
可执行文件的加载过程程序加载的时候,找到一个段地址 SA:0000,程序从 SA+10H:0000 处开始运行,SA 存放在 ds寄存器中
刚加载进内存中时,
此时看到 ds 寄存器的内容为 075AH ,所以程序的物理地址就是 ds+10h ,正好符合在int21 时需要使用 p命令执行
实验3 编译链接跟踪assume cs:codesgcodesg segment mov ax,2000H ; AX= ...
每天一道leetcode-二叉树的直径
题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
示例 :给定二叉树
1
/ \
2 3
/ \
4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
思路找到左子树的节点个数,右子树的节点个数,剩下的就好做了
我写了的lj代码
package March;/** * @description: 二叉树的直径 * @author: Pxy * @create: 2020-03-10 20:02 **//** * [4,-7,-3,null,null,-9,-3,9,-7,-4,null,6,null,-6,-6,null,null,0,6,5,null,9,null,null,-1,-4,null,null,null,-2] * 上面这个结果过不了 */public class diameterOfBinaryTree { class TreeNode{ int val; TreeNod ...
漏洞挖掘实验
实验拓扑如下
任务一 寻找漏洞主机扫描存活主机(虽然知道了但还是扫一下)
注意本机ip是192.168.1.2
-F 选项快速扫描一下其他主机
既然是ftp,那么就锁定192.168.1.3
提示了搜索vsftpd (靶机上搜索太慢了,我在自己机器上搜索的)
然后使用这个exploit去打就行了
可以看到进去就是root权限hhhh
然后还要搜索 1.key 这个文件
find / -name 1.key
读一下就好了
任务二 使用nikto、crunch和burpsuite进行网站渗透和控制此时的目标转向了 192.168.1.4 (192.168.1.3都拿到root了)
打开网站是 Cms made Simple 简称cms cms
后台地址 /admin/login.php
先设置一个代理
然后抓个包
由于密码是 admin 加上三位数字,如果想用 crunch 生成也行,直接用burp也行
爆破成功
进入到网站后台
任务三 获取webshell权限并拿到目标及开放的远程桌面端口号漏洞点在这
Run一下
好那我们这里为了避免网页卡顿。 ...