自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_62046696的博客

web菜鸡得进步之路

  • 博客(139)
  • 收藏
  • 关注

原创 ctfshow 红包题

其实这几道题都是通过php的扩展来做,还是需要多翻php文档。

2023-08-28 19:25:20 812

原创 关于hessian2的一些疑点(0CTF来分析)

从SCTF的java题,看到了0CTF的java,发现都是考察hessian2的链子,于是分析了一段时间。发现本地搭建,就算使用师傅们的EXP都打不通,很郁闷,是jdk的原因嘛??//////实例化的类 实例化的超类 构造函数类型 构造函数值。

2023-07-14 17:27:07 518

原创 [CISCN 2019华东南]Web4 day5

读取flag也无果,那就读一下/app/app.py,为什么读这个,因为做了很多题文件路径都是这个。这里如果python3不对,就改为python2,然后flask_session生成cookie。直接读取网卡 /sys/class/net/eth0/address。直接修改url,发现没显示,但是访问错误的路由就会有no response。打开界面,点击read somethings直接进行了跳转。发现需要修改cookie,密钥就是网卡mac伪随机生成的。

2023-05-21 20:15:47 715

原创 [GFCTF 2021]文件查看器(GZ、过滤器、phar) day4

打开界面直接一个登录界面,直接admin/admin登录进去。进来之后发现是一个文件查看器的功能随便输入了点东西发现了报错,然后读取文件的功能,输入Files.classs.php发现读取不成功换了个index.php大概的意思就是new 传入一个类,然后调用类中的方法,推断肯定有别的源码,果断扫目录发现www.zip,里面有几个php文件,然后可以看到每个类中都有几个魔法函数,说明肯定是用他们一起然后构造一个pop链,大致拼接了一下这里有一个点就是)();

2023-05-10 11:44:46 655

原创 [GFCTF 2021]ez_calc day3

目录此时我脑袋产生了几个问题:但是尝试了几个弱密码发现不对,找一下有没有代码泄露的点。咦发现ctrl+u查看的源码和f12显示的竟然不一样我丢,涨知识了。js大小写有漏洞之前遇见过<!-- if(req.body.username.toLowerCase() !== 'admin' && req.body.username.toUpperCase() === 'ADMIN' && req.body.passwd ===

2023-05-08 22:05:48 1313

原创 [GFCTF 2021] day2

template需要就是传进去index.html,这样才会调用listdata这个方法。--源码藏在上层目录xxx.php.txt里面,但你怎么才能看到它呢?发现会调用listdata方法并且需要我们传参 action module。$dir需要是admin,是space传进来的,所以space=admin。/template/admin/ 首先代码中有这一个目录,访问看一下是啥。template也就是filename需要是 index.html。则需要满足 $p存在也就是,在这里需要一个键和值,

2023-05-07 21:42:03 934

原创 [羊城杯 2020]a_piece_of_java

首先jd-gui进行反编译简单查看发现有用的类就两个一个是MainContrller.class和InfoInvocationHandler.class分析有二个路由:/index: post传参输入账号密码,存入名为data的cookie中序列化,然后赋值一个maxage/hello就是把cookie反序列化这里不满足if条件,就会执行我们的invoke方法。目前思路 序列化传参cookie->反序列化cookie->调用invoke方法->找一条链子。

2023-05-07 16:00:45 1175

原创 [EIS 2019]EzPOP

考点:base64加密,解密的时候按4个的倍数然后数组里面含有 php代码也可以执行然后学到了解题思路,逆推然后找各个变量的初始值啊又是php反序列化的题目,这么长看的属实头疼。。。进去分析通常套路直接找链子的尾部,可能执行代码的地方死亡绕过exit,把这段代码进行base64加密就可以,然后把filename控制为php://filter解码base64读取思路确定,看一下filename 、data是否可控--->---> 这里的name 是 $this->可控。

2023-05-05 00:11:39 815

原创 b01lers(php.galf)

这里肯定会调用 syntaxreader的构造函数,看了一下三者的区别,其实就是末尾的debug传参的问题,第一个if和第二个elseif都是NULL,但是第三个确有值,这是唯一的差别。就是我们输入的code是以空格分割的,这里+就是空格的意思,但我用空格也过去了qwq ,一定要静下心来审计!所以我们一开始传入的arg就可以一条线的到达我们的执行命令,然后就是看一下中间的条件,只有。这里卡了一下,debug是数组类型的,这点可以看php中赋值得知。为什么要调用它呢,看一下传参值。

2023-03-25 12:13:42 558

原创 java动态代理(RMI 基础)

java动态代理其实就是方便了开发人员的工作量, 不需要一层一层的修改代码。一般来说会有四个类来实现,其实关键信息就是这几行。前提:JDK

2023-03-22 20:19:31 884

原创 buu刷题(4)

题目中只限制了 F I L E S [ f i l e ] ∗ ∗ 的上传后缀,也只给出 ∗ ∗ _FILES[file]** 的上传后缀,也只给出 ** FILES[file]∗∗的上传后缀,也只给出∗∗_FILES[file] 上传后的路径,那我们上传多文件就可以绕过。人傻了,上面的思路全部错掉,上面输入的filename文件,其实是没有权限执行php代码的,这点我们可以通过phpinfo();所以我们的恶意代码先执行。也是通过报错推断出过滤了{{而没用过滤{,这里我用的是{%3*3%}发现回显的是,

2023-03-22 19:00:38 581

原创 URLConnection/JNI

首先java中如果想要调用native方法需要在类中定义一个native方法。这点和java中的接口差不多,都需要一个其他的类来实现这个接口。这里定义了native void就是没参数,因为只是为了简单的看出功能,sayHello方法需要c来实现。

2023-03-18 22:00:56 465

原创 xxe盲注

当然除了这些,还有一种方式代替一些符号比如百分号%,参数实体的百分号%也不能出现在实体值中,这个时候我们可以用Unicode编码,%=% 也可以写做16进制 ,%=%=%外部实体+参数实体的二重调用%errorr1;%errorr;

2023-03-18 18:11:25 894

原创 Java本地命令执行

本来文件叫做 null-bytes.txt\u000.jpg却变成了,null-bytes.txt,把后面的截断了,大多数出现这种漏洞的地方。文件上传,判断后缀jpg但是其实存的是前面txt的后缀,这不就是php%00截断的原理吗,基本一样就不细说了。直接构造这个类发现也进去了这个方法,但是弹不出来肯定是某些变量的值的限制,哪天闲了我深层搞一搞。前言:本来想安装一个自己搞搞,但是jdk版本太低了不兼容,还好很容易理解。代码就一行满屏的报错,还是500真的是累了,唉先看懂原理明天调试把。

2023-03-15 22:13:22 1487

原创 理解java虚拟机的加载机制

// 反射加载TestHelloWorld示例Class.forName("com.anbai.sec.classloader.TestHelloWorld");// ClassLoader加载TestHelloWorld示例this.getClass().getClassLoader().loadClass("com.anbai.sec.classloader.TestHelloWorld");forName默认会初始化被加载类的静态属性和方法,如果不希望初始化类可以使用Class.forN

2023-03-15 10:03:21 312

原创 templateslmpl利用链

cc3Jdk版本:调用AnnoctionInvocationHandler中的版本需要在,

2023-03-13 19:45:33 479

原创 javassist

无参构造,如果是有参new CtClass[]{pool.get("java.lang.String")}ctClass.addField(name,CtField.Initializer.constant("zhangsan"));new CtField(pool.get("java.lang.String"), "name", ctClass) CtField添加变量。

2023-03-12 22:10:48 369

原创 刷题(第三周)

sess_根我们生成的sha256编码,上传进去了,还差那个文件是否存在,发现upload有mkdir(里面的就是/var/babyctf/$attr)这里的attr我们可以控制,目录!简单来说,file_exits,如果是文件目录都可以为true,文件上传保存在/var/babyctf/$attr/$username/文件名,如果attr=success.txt,那么sess就保存在它里面,最后更改phpsessID为我们上传的sha256的值。变成我们的flag不就可以了吗。s:3:"123";

2023-03-11 11:30:03 842

原创 刷题(第二周)

感悟:代码审计的题的确非常需要耐心一个个看,所以做题应该静下心来,思路:找出可以利用的方法比如,include/file_get_contents等,然后找出__destruct起点一步步观察。这里的this->pool是我们可以控制的,所以找出一个恶意类中的 saveDeferred方法即可,最终找到了PhpArrayAdapter.php中的方法,这里虽然报错了,但还是返回了1/0我们输入的值,因为flask框架是基于python语言的,所以师傅们用的方法是#注释掉后面的,

2023-03-06 18:56:30 779

原创 buu刷题(第一周)

create_function直接执行,里面是有eval所以需要让create_function的函数名()引用一下来执行,下面的是不可能爆破成功了,然后create_function()这个函数的漏洞,他create之后会自动生成一个函数名为%00lambda_[0-999]我们可以爆破。

2023-03-01 19:50:14 986

原创 CISCN(Web Ezpentest)GC、序列化、case when

最近又学到了一道新知识,case when的错误注入,也是盲注的一种。结果返回 NULL解释一下这个就可以理解,也就是首先二进制(B),然后when后面其实就是判断,如果判断成功执行 then都没有则会返回NULL单纯看的话,这段代码基本就是sql注入的后端,id后面的东西是需要我们注入的,REGEXP后面是是否以f开头,重点是这里如果不成立则会 1+~0(这里为取反操作符,0 取反即为最大值,再加 1 溢出报错)

2023-02-17 22:15:36 849

原创 xpath注入[NPUCTF2020]ezlogin

false or true or true and false ,如果是两个 false or true and false 不就是false了吗。PHP://filter/string.toupper/resource=/flag 转换为大写都可以绕过。不管输入什么,很容易发现登陆就超时了,说明这里token是不断刷新的。这样构造也是一样的目的都是为了闭合后面的',为啥有两个or呢。有的时候会因为网络报错,加一个time.sleep就可以了。这条命令是判断根目录有几个结点,

2023-02-09 21:58:37 710

原创 SICTF(剩余wp)

这是过滤之前的,至于为什么是132呢那是因为脚本跑出来的,然后这个模板中有os所以可以popen利用?

2023-02-08 10:24:12 471

原创 flask计算pin码

可以参考这个链接。

2023-02-04 15:47:56 2065 2

原创 2022强网拟态 (部分wp)

这道题也是看了很久,因为没环境,然后其他的wp写的比较简单,对于我这种菜鸡逃逸28位自己琢磨了好久,这种序列化逃逸的题,需要我们提前构造然后一步步写。

2023-02-03 15:24:21 602

原创 [GYCTF2020]EasyThinking (ThinkPHP V6.0.0)

但是发现无法直接读取flag,应该是需要通过执行readflag得到flag,这个时候发现终端不能执行命令,这也正是本题的第二个考点。打开以后就注册一些功能,注册admin admin,成功然后尝试search这个方法是否有任意文件读取漏洞,试了试没有任何的回显。ThinkPHP6.0.0版本,直接百度搜漏洞,任意文件写入漏洞,然后想到能不能直接写入一句话马,然后得flag。然后想法就是直接找到这个文件,直接蚁建出就可以,但是这个session保存在了哪呢,然后个人中心,显示的是自己的历史命令。

2023-01-25 15:30:32 1660

原创 [GXYCTF2019]BabysqliV3.0

这里的test是为了绕过if(preg_match("[^a-z0-9]", $this->Filename)),只能是纯字母或者纯数字。为什么需要上传两次呢这是因为,执行cmd的方法是在destruct,上传第二次,第一次的就会销毁然后就会执行第一次的结果。在析构方法中找到了,$this->Filename = $sandbox.$_SESSION['user'].$ext;我们需要满足这个认证是成功的,所以需要找到这个session['user']没有这个用户,所以感觉可以使用盲注,对账号进行盲注。

2023-01-12 11:06:21 674

原创 [RoarCTF 2019]Online Proxy(x-forwarded-for盲注)

这道题点开题目然后题目显示不出网,一开始误认为是ssrf了,但是没有更多的信息了。源码有一个ip会不会是修改X-Forwarded-For就可以了呢,抓包试一下,发现有两个ip,一个当前一个是last上一个的意思把,这个本地是我火狐插件默认的。然后这里因为我经验少没感觉,看了大佬的讲解,才突然悟了,这一眼就可以看出一个sql注入的问题,因为last肯定存储到了一个数据库的里面不然查询10.244.80.206怎么能显示出来呢。

2023-01-05 21:34:03 651

原创 [安洵杯 2019]不是文件上传(文件名不能用“,数据库可识别hex编码)

然后看到了file_get_contents可以读flag,所以$path=/flag,为什么是这个呢,是因为基本上的题目flag都在根目录如果不对可以再继续尝试,然后前提是ifview为true.数组变成了:O:6:"helper":2:{s:9:"\0\0\0ifview";打开题目尝试上传文件发现只能上传图片,然后看见了图片的路径,但是图片码连不上蚁键,结合题目,然后看到了题目给出的github源码。本来我是没相通为什么,后面序列化的需要hex编码,后来突然懂了,是因为双引号被禁用。

2023-01-04 22:15:03 509

原创 flask session机制

这里因为源码是app.config['SECRET_KEY'] = str(random.random()*100)所以这里也是100,让皇后python2 和python3运行出来得随机种子是不一样得,所以得看服务端用得哪个版本,建议从pyhotn3到python2如果不对,都试试。然后直接访问/app/hard_t0_guess_n9f5a95b5ku9fg/hard_t0_guess_also_df45v48ytj9_main.py出源码,整理得。除了admin用户不能直接登陆,其他用户都可以。

2023-01-03 21:12:43 679

原创 [SUCTF 2018]MultiSQL(预处理)

通过命令获得flag ,可能是我做题少吧,第一次 看见sql中采用预处理然后写入webshell,最后得flag,反过来分析,通过上传文件给了一个可读写权限得路径,一步步收集信息,只能说自己太菜了。wp是通过盲注,然后一个个读取user.php的源码,我简单的跑了一下半个小时也跑不出来,所以我觉得这种方法并不太实用。异或可以然后试试,发现呃呃呃应该是过滤了,fuzz发现就剩了几个符号包括分号,想到了堆叠注入分号链接。为什么有写入权限呢,因为文件上传都是传到了这个目录的里面,所以有可写的权限。

2022-12-31 15:55:22 1049

原创 [BSidesCF 2019]SVGMagic (XXE)

原理:有回显的情况可以直接在页面中看到Payload的执行结果或现象,无回显的情况又称为blind xxe,可以使用外带数据通道提取数据,先使用php://filter获取目标文件的内容,然后将内容以http请求发送到接受数据的服务器。最后发包,%remote先调用,vps上的 dtd文件,然后%int调用读取文件,最后send把读取后的发送到远程vps上,样就实现了外带数据的效果,完美的解决了 XXE 无回显的问题。普通的xml二者对比,改变不多也就是

2022-12-28 16:05:18 1073

原创 [网鼎杯 2020 白虎组]PicDown(任意文件读取)

打开界面发现有一个get传参然后,尝试任意文件读取漏洞,/etc/passwd看一下,提示下载了一个jpg图片然后打不开只能用 010查看一下信息 看来是猜对了,然后 如果日记没删掉可以查看历史记录 .bash_history呃呃呃差不到,那就看一下现在的进程python 2的app.py文件,直接读取 源码出来了,解析一下 这一块可以分析一下,我们需要获得SECRET_KEY的值,然后使key等于,最后shell进行命令执行,但是看完以后那个文件被删除了,我们怎么获得呢?后面这个3怎么来的呢,

2022-12-27 15:01:58 529

原创 EasyBypass (;管道符)

肯定要把file从命令中注释掉这种,以前接触过闭合然后自己重新构造一个🐎,但是这里好像管道符也可以使用;这样就成功闭合掉了,然后其实还有一个疑问就是我cat /f*的时候也能用,可是|\*|\。这个也就是给传入的参数加了一个引号包起来,然后往上继续查看过滤的字符号剩下什么。如果是 新生类的话,system那里应该换为 new a(b)这种的形式,分号还有,并且tac也没 过滤,flag被过滤掉了但是可以用?报错了查看信息是引号的问题,我们还需要闭合掉引号不然就变成了。就需要我们自己写入闭合。

2022-12-23 16:32:00 1304

原创 [FireshellCTF2020]Caas

这里的 "" 和的区别是,#include 会直接读取系统中的,而""会先看本目录有没有,再去读取系统中。本来以为会是一个ssti模板,{{8*8}}却仍然还是报错,print echo 等输出都不行。然后想了一下,是因为识别了c的文件头包含了文件,然后可以下载,那么会不会存在任意读取漏洞呢。/tmp目录下的,class_7eamm1tu3.c后缀名是c,明显是c语言的标志。那么我们可以直接读取flag,#include "/flag"打开界面,是一个运行代码的*框,然后我们输入。

2022-12-22 17:07:02 755

原创 [N1CTF 2018]eating_cms parse_url绕过

parse_url漏洞,有一个办法是使parse_url解析出错,从而无法进入下面的foreach判断。这道题考察的也不算是代码审计,更像是看你注意不注意细节,主要是一个个尝试的麻烦。伪协议访问会被过滤掉,直接到hacker的界面,然后我们就要想如何绕过,这句话是重点,用我们上传的文件名进行system,然后可以用管道符;为什么是这个而不是flag,是因为都试了以下,flag啥也不返回。那么问题又来了,这个既然是假的那真的上传界面在哪呢,文件上传的界面,随便上传了一个发现是一个假的界面。

2022-12-21 21:04:42 698

原创 [极客大挑战 2020]Greatphp (php 内置类)

闭合掉,因为前面可能会有一些报错的信息,所以可以先闭合掉前面的东西,然后再来包含后面的是取反,因为在链里面所以需要用到解码,不用编码绕不过去正则,里面是/flag因为刷题多了都在根目录下面,不在的话正能一步步尝试。这里本来是用Exception构造,可是报错,因为我的php版本是5.41的然后没有Error,正在我想为什么报错的时候突然想到了,因为php7版本才引入PHP7中,可以在echo时触发__toString所以换了一个版本。PHP7中,可以在echo时触发__toString,来构造XSS。

2022-12-20 21:24:47 1353 1

原创 [HarekazeCTF2019]Avatar Uploader 1

登陆进去文件上传类的题目,对png图片和文件大小进行了限制,我们上传了一个符合条件的图片,并没有给出什么看了文章才知道原题给出了源码upload.php 其他文件没啥用//获取文件MIME类型$type =if (!) {}关键点有两个重要的函数分析一下。

2022-12-19 17:19:05 257

原创 [ISITDTU 2019]EasyPHP rce替换字母

打开界面有两个if首先要绕过第一个正则,限制了 oxoo-空格的字符 和数字,还有一些字母然后第二个就是字符的种类不能超过13个首先第一个用取反,传入?没反应。

2022-12-18 18:24:32 586

原创 [强网杯 2019]Upload

except是一个数组,正好我们想要调用的这个public function upload_img()也是在同一个类中,那个我们给 index赋值 upload_img这个方法不就可以了吗。发现是序列化,那么肯定会有反序列化的地方目前还没遇到,也没提示的点了,扫一下目录,扫到了www.tar.gz。if($this->{$name}){//成为了这里的属性,而类中不存在index属性。//如果我们能控制,指定路径的目录名称,然后传一个图片码不就可以getshell了码。

2022-12-17 21:34:28 946

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除