第十届全国大学生信息安全竞赛-线上赛 write up(持续更新)

2023-10-27

0x00 WEB

PHP execise -web150

PHP exercise
这是一道分值150的web题,打开题目链接之后,看到题目界面
题目界面
可以看到有一处输入的地方可以输入PHP语句
尝试执行以下phpinfo(),这里解释下,phpinfo是一个运行指令,目的为显示php服务器的配置信息
phpinfo()输出 PHP 当前状态的大量信息,包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。
phpinfo()

然后发现禁用了以下的函数
函数禁用

接着可以输入一下代码

foreach (glob("./*") as $filename) {  echo $filename."<br>"; }

来获取当前目录
再用highlight_file()函数读取flag文件
附上highlight_file()用法
这里写图片描述

wanna to see your hat? -web250

这里写图片描述
这是一道分值250的web题
打开题目链接之后???
这里写图片描述
肿么肥事,给我一堆帽子??还好不是绿色的
点击下面的链接之后
这里写图片描述
发现一个输入框输入名字,当然随便输入了点东西,之后…………
???!!!
这里写图片描述
他还真的绿了……
暂时没发现什么特别的
查看了一下register的界面
这里写图片描述
假设,这道题存在sql注入的漏洞。当然这还不是最后的结论,当我在一通操作之后,发现还是没有突破。
那就要考虑下自己的方向是不是错了,然后考虑一下尝试别的常见的题型,比如源码泄露,这里利用自己搜集的字典,用一些扫描工具扫一下,果然,发现了源码泄露
这里写图片描述

svn恢复工具: https://github.com/kost/dvcs-ripper

这里写图片描述
使用方法
这里写图片描述
可以看到已经恢复完了
这里写图片描述
这里利用一个工具进行代码审计——Seay源代码审计系统
这里写图片描述
打开之后,首先寻找我们最关心的flag值,在index.php里看到了它的身影,嗯,已经很接近了,再来看看它需要什么条件。

if(isset($_SESSION['hat'])){
    if($_SESSION['hat']=='green'){
    output("<img src='green-hat-1.jpg'>",10);
    }else{
    output("<img src='black-fedora.jpg'>",1);
    echo $flag;
    }

这里需要一个session值不为green且不为空则输出flag
然后我们继续寻找在哪里进行session的设置
这里写图片描述
嗯,有了重大突破

if (isset($_POST["name"])){
  $name = str_replace("'", "", trim(waf($_POST["name"])));
  if (strlen($name) > 11){
    echo("<script>alert('name too long')</script>");
  }else{
    $sql = "select count(*) from t_info where username = '$name' or nickname = '$name'";
    echo $sql;
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    if ($row[0]){
      $_SESSION['hat'] = 'black';
      echo 'good job';
    }else{
    $_SESSION['hat'] = 'green';
    }
    header("Location: index.php");
  }

}
if(strlen($name)>11)

name字段长度不能大于11

if($row[0])

只要查询语句返回不为空,就执行

尴尬的时候来了,我们不知道哪个name值返回不为空,于是猜测存在注入,其实也符合一开始的猜想,利用burpsuite抓包
测试一下是否存在注入
这里写图片描述
这里写图片描述
那么我们可以看到当我们输入了“

' or 1=1#

之后回显的结果是

\or1=1#

发现做了一定的过滤,比如空格被过滤,引号等
最后经过尝试之后,发现/**/代替空格可以绕过
这里写图片描述

构造的查询语句为

select count(*) from t_info where username = 'or/**/1=1#\' or nickname = 'or/**/1=1#\'

最后得到flag
这里写图片描述

0x01 MISC

传感器1

这里写图片描述

曼彻斯特编码(Manchester Encoding),也叫做相位编码( Phase Encode,简写PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。它在以太网媒介系统中的应用属于数据通信中的两种位同步方法里的自同步法(另一种是外同步法),即接收方利用包含有同步信号的特殊编码从信号自身提取同步信号来锁定自己的时钟脉冲频率,达到同步目的。

根据提示,编码方式为线路码,经过查询,可能为曼彻斯特编码,然而解码结果与ID不符。尝试差分曼彻斯特编码,可以解出第一个传感器报文为0024D8893CA584181,包含已知ID。使用相同方式,第二个传感器解码为0024D8845ABF34119,因此ID为8845ABF3。
脚本一

from Crypto.Util.number import*
id1=0x8893CA58
msg1 = 0x3EAAAAA56A69AA55A95995A569AA95565556
msg2 = 0x3EAAAAA56A69AA556A965A5999596AA95656
print(hex(msg1^msg2).upper())
s = bin(msg2)[6:]
print(s)
r=""
tmp=0
for i in xrange(len(s)/2):
    c=s[i*2]
    if c == s[i*2-1]:
        r+='1'
    else:
        r+='0'
print(hex(int(r,2)).upper())

脚本一需要用到crypto模块,安装过程的问题可以参考
crypto模块安装问题
脚本二

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-09-19 12:27:41
# @Author  : Your Name (you@example.org)
# @Link    : http://example.org
# @Version : $Id$

a = 0x3EAAAAA56A69AA55A95995A569AA95565556
b = 0x3EAAAAA56A69AA556A965A5999596AA95656
ba = bin(b)
print ba
ss = ""

for i in xrange(len(ba[2:])/2):

    a1 = ba[i*2:i*2+2]
    a2 = ba[i*2+2:i*2+4]
    # print 'a1:'+a1
    # print 'a2:'+a2

    if a2 !='10' and a2 !='01':
        continue
    if a1 !='10' and a1 !='01':
        ss+='1'
        continue

    if a1!=a2:
        ss+='1'
    else:
        ss+='0'

    # print ss

print ss
print len(ss)

ret = ''

# if '8893CA58' in ret:
print hex(int(ss,2)).upper()

#0X10024D8893CA584181L
#0X30024D8845ABF34119L

这里写图片描述

0x02 reverse by 极光-吹雪

溯源

1、运行一遍、看看情况
这里写图片描述
模式很简单,就是输入一段密钥,返回一个提示结果;

2、打开IDA,根据字符串“fail”锁定位置,按F5反汇编,核心代码如下:
这里写图片描述
这上面我已经根据自己的理解给部分变量添加了名字;

3、它的算法大概是这样的,首先需要用户输入一个10×10的矩阵,矩阵中每个元素的类型是dword,将矩阵命名为Memory,行以x坐标表示,列以y坐标表示。然后从存放数字0的那个矩阵位置开始,每次根据某个算法跳到另外一个位置,若成功跳转,则在跳转的同时交换这两个位置中存放的数,否则不跳转,也不交换数。经过1000×4次操作后,若Memory[i]=i (i=0…99),则输入的矩阵是成功的,否则是失败的;

4、下面先讲一讲矩阵是如何输入的,它这里并不是直接输入数字,而是输入两个大写字母,通过大写字母的偏移来算出的。比如说37=16*2+5,由于“C”的偏移为2,“F”的偏移为5,所以CF即代表37。输入时就按顺序输入100个这样的大写字母对就可以了,成功的那100个大写字母对就是最后的flag;

5、接下来分析一下跳转的算法。首先有一个长度为1000的数组byte_403230,每个元素的类型为byte,这个数组可以直接从.rdata段中读取出来,其值为:
[160, 142, 226, 128, 189, 158, 130, 145, 29, 181, 223, 138, 200, 152, 4, 76, 25, 83, 197, 181, 50, 204, 116, 198, 72, 96, 183, 251, 41, 63, 46, 254, 237, 155, 86, 206, 116, 155, 94, 132, 228, 54, 226, 88, 104, 140, 83, 246, 81, 19, 145, 255, 1, 140, 65, 82, 71, 102, 206, 34, 69, 75, 228, 220, 104, 128, 91, 76, 206, 194, 115, 158, 123, 2, 4, 114, 85, 189, 0, 149, 132, 45, 219, 153, 154, 31, 179, 30, 108, 199, 224, 34, 223, 110, 235, 106, 181, 124, 175, 250, 214, 172, 45, 74, 147, 120, 191, 60, 26, 210, 224, 47, 221, 70, 99, 142, 20, 78, 84, 83, 237, 163, 210, 66, 34, 140, 192, 251, 98, 166, 145, 195, 245, 35, 254, 190, 229, 70, 14, 21, 245, 32, 14, 145, 27, 151, 6, 43, 154, 205, 10, 91, 151, 60, 229, 182, 26, 188, 125, 81, 160, 163, 207, 130, 19, 22, 144, 144, 124, 173, 222, 182, 135, 239, 83, 56, 250, 207, 186, 211, 238, 53, 103, 198, 56, 67, 145, 218, 190, 192, 235, 210, 103, 131, 231, 18, 156, 113, 172, 180, 93, 155, 219, 96, 41, 176, 29, 167, 33, 158, 1, 13, 137, 166, 13, 148, 195, 115, 121, 129, 189, 232, 133, 94, 41, 78, 195, 120, 91, 187, 114, 187, 153, 30, 51, 223, 142, 239, 127, 105, 200, 47, 149, 88, 65, 223, 1, 4, 46, 203, 181, 6, 38, 237, 131, 167, 107, 60, 241, 161, 110, 221, 175, 181, 236, 90, 226, 96, 22, 113, 30, 135, 136, 212, 26, 111, 131, 31, 187, 131, 106, 71, 91, 235, 254, 43, 8, 52, 166, 83, 62, 151, 36, 29, 250, 97, 202, 131, 236, 159, 172, 40, 21, 61, 192, 62, 173, 26, 191, 168, 121, 115, 227, 37, 198, 87, 235, 204, 51, 45, 220, 155, 84, 104, 50, 37, 212, 59, 175, 177, 104, 156, 119, 110, 195, 202, 217, 188, 160, 122, 51, 180, 239, 20, 133, 232, 58, 235, 166, 68, 38, 209, 4, 187, 209, 41, 133, 28, 230, 60, 234, 69, 194, 213, 214, 14, 206, 241, 60, 239, 167, 126, 216, 175, 184, 138, 229, 125, 254, 30, 50, 122, 24, 4, 150, 33, 139, 127, 65, 58, 104, 102, 80, 76, 37, 29, 25, 65, 14, 61, 58, 101, 30, 94, 205, 242, 78, 63, 124, 163, 60, 45, 85, 0, 18, 78, 74, 215, 49, 147, 80, 138, 185, 30, 43, 169, 157, 223, 169, 77, 131, 97, 151, 75, 147, 251, 99, 23, 251, 32, 19, 122, 166, 209, 129, 120, 90, 204, 165, 28, 51, 79, 104, 19, 31, 75, 111, 167, 37, 201, 35, 248, 120, 215, 234, 80, 82, 255, 2, 92, 64, 105, 3, 93, 22, 39, 1, 139, 231, 71, 46, 214, 24, 67, 22, 230, 3, 213, 188, 20, 110, 180, 122, 237, 48, 132, 184, 238, 205, 40, 177, 198, 29, 201, 88, 100, 102, 253, 178, 56, 201, 223, 156, 105, 251, 137, 234, 121, 171, 236, 154, 232, 228, 203, 35, 131, 230, 83, 185, 250, 68, 200, 192, 93, 101, 223, 191, 77, 130, 122, 205, 18, 100, 135, 199, 68, 22, 236, 63, 81, 2, 154, 210, 222, 127, 18, 113, 32, 114, 18, 114, 205, 1, 140, 82, 178, 180, 226, 71, 165, 91, 57, 246, 111, 169, 97, 45, 194, 116, 127, 232, 124, 11, 69, 71, 17, 26, 4, 50, 241, 18, 39, 116, 81, 70, 72, 109, 26, 134, 206, 15, 241, 49, 64, 97, 16, 133, 176, 96, 247, 184, 228, 238, 189, 177, 80, 103, 73, 2, 102, 232, 152, 93, 2, 15, 190, 127, 157, 39, 138, 91, 13, 150, 252, 49, 193, 212, 145, 209, 180, 21, 88, 140, 233, 8, 113, 236, 2, 118, 141, 204, 110, 209, 36, 229, 212, 149, 76, 110, 57, 166, 196, 22, 16, 207, 98, 77, 40, 156, 117, 192, 120, 203, 174, 49, 251, 25, 197, 140, 9, 156, 203, 37, 21, 76, 100, 184, 201, 240, 36, 214, 236, 38, 183, 167, 27, 125, 150, 245, 186, 248, 163, 192, 236, 107, 237, 104, 31, 0, 46, 231, 137, 38, 161, 73, 44, 235, 239, 187, 145, 212, 110, 84, 37, 159, 51, 155, 137, 197, 175, 118, 225, 142, 77, 36, 71, 198, 132, 27, 209, 207, 168, 57, 70, 11, 120, 22, 115, 96, 201, 160, 229, 95, 248, 182, 43, 24, 60, 102, 119, 13, 159, 30, 111, 254, 195, 65, 97, 111, 161, 140, 45, 160, 87, 106, 195, 50, 131, 54, 126, 60, 232, 29, 54, 76, 68, 99, 45, 107, 56, 238, 187, 148, 246, 83, 42, 69, 225, 248, 162, 17, 116, 117, 47, 249, 148, 150, 32, 158, 137, 110, 3, 218, 80, 13, 121, 22, 227, 113, 241, 154, 238, 191, 10, 247, 126, 59, 232, 251, 162, 49, 151, 109, 18, 204, 1, 101, 173, 129, 112, 236, 75, 73, 214, 98, 211, 216, 228, 4, 100, 67, 114, 143, 62, 212, 214, 124, 167, 189, 136, 161, 228, 56, 77, 165, 76, 222, 111, 138, 184, 163, 98, 113, 103, 19, 74, 59, 233, 199, 242, 151, 129, 51, 15, 60, 102, 237, 134, 205, 1, 14, 212, 57, 13, 167, 193, 171, 80, 133, 193, 46, 186, 251, 157, 222, 169, 201, 160, 44, 185, 123, 129, 215, 72, 251, 250, 211, 242, 92, 83, 142, 98, 116, 189, 184, 95, 167, 138, 238, 125, 169, 137, 124, 60, 33, 234, 161, 206, 143, 15, 31, 180, 54, 185, 130, 77, 252, 237, 37, 180, 218, 240, 17, 43, 189, 184, 238, 234, 154, 166, 68, 204, 164, 209, 72, 212, 17, 24, 123, 46, 117, 132, 87, 125, 27, 204, 190, 12, 187, 85, 202, 159, 86, 41, 205, 52, 238, 208, 88, 122, 46, 139, 252, 72, 163, 162, 156, 125, 91, 154]
这时从byte_403230[999]中取出一字节数记为content_of_array,通过和十进制3作按位与运算提取出该值的最低2个二进制位,将其保存到v6(0<=v6<=3)中,若v6<2,则v7=1-v6,否则v7=5-v6,所以0<=v7<=3。v34和v35分别为16字节数,且这两个数内存空间连续。但是这个程序并不把v34和v35当成两个16字节数,而是把它当成8个4字节数。由低地址到高地址分别为:
00000000 00000001 00000000 FFFFFFFF
00000001 00000000 FFFFFFFF 00000000
我们可以等效地把v34和v35这段32字节空间解释为长度为8的4字节数组arr。arr[]={0,1,0,-1,1,0,-1,0}。
跳转就是从(x,y)这个位置跳到(x+arr[2*v7],y+arr[2*v7+1]),若新坐标不在矩阵范围内则跳转不成功,否则跳转并交换。
这时content_of_array右移两位,继续与3进行按位与运算,按刚刚所说操作。那么一个content_of_array可以提供4次跳转机会,而从byte_403230[999]到byte_403230[0]共1000个content_of_array,所以操作次数是1000×4次;

6、而我们只要编写一个逆算法就行,我们可以先建立一个矩阵,满足Memory[i]=i (i=0…99),然后穷举每一个位置,按逆算法回去,若最后的目的地位置存放的数是0,则那个矩阵就是所求输入矩阵;

7、flag为

CEBGAMBEBHDBBNCPBKBLABADCCACBIBFEOCGAOBCEGCACIEAAPBDBMCNBABBDJANCMAIAFDMAECHDACBDDCJFPBOALDHEEDGBPCFEHEIBJDLFNAGAJDKFIFHAKECEJCDAHDNEPFJFGGBDOFADCCKFDDIEDELEMCOFLFCFBDPFMCLFFGCGDENFKAADEDFFOEBEKFEEFGA

填数游戏

1、首先我必须说一下,这个填数游戏其实是数独游戏,如果不知道这个分析起来会很困难。数独游戏是一个9×9的数表,其中按3×3划分一个块,每块是一个3×3的小数表。数独游戏就是先在表中写上一些数作为已知条件,然后在“每行每列每块都不允许有数重复”的规则前提下把每一个空位全部填写完;

2、有了这些知识以后,分析起这段代码就比较容易了,只要耐心一点,基本上可以分析得八九不离十:
这里写图片描述

Sudu::set_data函数中,data_start_是数独表中预先存放数的首地址,双击这个变量跟踪进去发现:
这里写图片描述

数独表中空下来给用户填的部分设为了0,而非0的数都是数独题目中预先设置好的数,我们从首地址开始依次读81×4个字节(因为每个数是dword类型4字节),可以分析出该程序给我们的数独题目是这样的:
这里写图片描述

set_sudu是用户填数的函数,双击跟进去:
这里写图片描述
while函数里面的Sudu::set_number就是一个一个填数的函数,双击跟进去:
这里写图片描述

回到最开始的主函数,跟进Sudu::check函数:
这里写图片描述

跟进块检查函数:
这里写图片描述
跟进列检查函数:
这里写图片描述

跟进行检查函数:
这里写图片描述

3、所以这个程序就是让你解掉前面展示的那个数独游戏,然后输入进去,原先有数的位置注意要输入0以表示跳过。至于这个数独,你可以选择自己动手玩玩,也可以直接丢到 http://shudu.gwalker.cn/ 这个网站在线解。解出的结果如下:
这里写图片描述

所以flag为

340089102508406930016207058060875349709064820854392006093650071170023604602740590

这里写图片描述

欢迎来到加基森

1、IDA查看程序,根据字符串定位到关键函数,暂且命名为main函数:

这里写图片描述
2、程序流程是接收16位输入,然后主要进行了sub_804A310和sub_804A5A0这2个函数的操作。第一个函数看起来很复杂,好像是某种置换加密,类似AES。
跟到第二个函数里去,发现最终的校验函数,感觉是将输入转成一个16*16的01表,然后根据预先准备的数据进行了置换和异或等操作,一次竖着取16bit进行运算,循环和final上的数据比较,总共循环16次:
这里写图片描述

3、验证时候的关键代码如下:
这里写图片描述

其代码可简化为:

for ( int i = 0; i < 16; ++i )
{
for ( int j = 0; j < 8; ++j )
{
table[s_box[i * 8 + j]]      = (input >> j) & 1;
table[s_box[(i + 16) * 8 + j]] = (input[15 - i] >> j)&1;
}
}
for ( int i = 0; i < 16; ++i )
{
k = 0;
for ( int j = 0; j < 16; ++j )
{
k = k^(table[j * 16 + i] * data[i * 16 + j]);
}
if(k != final)
return 0;

由此可以爆破求解出这里的输入数据:
0xca, 0xd3, 0xe5, 0x43, 0xf2, 0x3c, 0x3f, 0xec, 0x33, 0xa9, 0x3f, 0x95, 0xdd, 0x8c, 0x4c, 0x2a

4、接下来是对第一个函数求解了,分析半天的,找到了一份AES源码
https://github.com/dhuertas/AES/blob/master/aes.c
根据源码比对分析,发现有几处与原始AES算法不同:
①:
这里写图片描述

这里写图片描述

②:

这里写图片描述

这里写图片描述

③:

这里写图片描述
这里写图片描述

以上这几处,是跟原始代码有区别的地方,还有s盒,也是不一样的;

5、然后根据他对AES代码的修改,着手对手上的原始代码进行修改,首先求inv_s_box,满足条件如下:

v = s_box[16*i+j]
i + 16 * j == inv_s_box[ 16 * (v & 0xf ) + v / 0x10 ]

6、然后是逆向列混淆,由于其原理:
这里写图片描述

这里的 2,1,1,3 换成了13, 14, 15, 13,根据AES定义在GF(28)上的乘法和加法:
这里写图片描述
这里写图片描述

求解出inv_a = {7, 1, 5, 2};
7、整改好AES后,接下来是对AES里的vm进行分析,提取出来vm的opcode,发现长度为110字节,那么可以通过opcode分析出哪些指令被调用了,然后分析那些指令就行了,分析出指令后化简其过程,得到如下结果:

t[0] = 0
t[1] = 0x10
t[2] = 0xf
while(t[0] < t[2]):
    t[3] = mem[t[0]]
    t[4] = mem[t[1]]
    t[3] ^= t[4]
    mem[t[0]] = t[3]
    t[3] = 0xf - t[0]
    t[4] = 0xe - t[0]
    t[3] = mem[t[3]]
    t[5] = mem[t[4]]
    t[5] ^= t[3]
    mem[t[4]] = t[5]
    t[0] += 1
    t[1] += 1

这里要注意的是,这个vm会对opcode进行修改
而mem上的数据,前面16字节是输入,后面是ichunqiuichunqiu

这里写图片描述

这里相当于:

key = "ichunqiuichunqiu"
input ^= key
input[14-i] ^= input [15-i]

所以可以分析出AES的实际加密过程:
这里写图片描述

由此修改AES的原始代码inv_cipher,即可求解出我们的输入了:
这里写图片描述

8、然而这并不是flag,后面才发现他打印了一张门票,实际上是个二维码,把二维码提取出来,扫描一下,就得到了真正的flag:

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十届全国大学生信息安全竞赛-线上赛 write up(持续更新) 的相关文章

  • 攻防世界-re-for-50-plz-50

    1 下载附件 exeinfo查壳 无壳 2 32位IDA分析 主函数分析 在注释里 31的来源 python和C语言 a cbtcqLUBChERV Nh X D X YPV CJ print len a include
  • 2021年江苏省职业院校技能大赛中职 网络信息安全赛项试卷--web安全渗透测试解析

    2021年江苏省职业院校技能大赛中职 网络信息安全赛项web安全渗透测试 2021年江苏省web安全渗透测试任务书 2021年江苏省web安全渗透测试任务书解析 如果有不懂得地方可以私信博主 欢迎交流 需要环境得 可以加博主联系方式 202
  • 虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问

    一 虚拟机环境搭建 1 安装docker git docker compose ubuntu sudo apt get update 更新系统 sudo apt get y install docker io 安装docker sudo a
  • 一些文件头

    由这些文件头即使文件后缀被乱改也可以通过查看二进制文件查出文件的匹配格式 当然这就是一些播放器识别文件的方法 1 从Ultra edit 32中提取出来的 JPEG jpg 文件头 FFD8FF PNG png 文件头 89504E47 G
  • buuCTF [ISITDTU 2019]EasyPHP 1

    buuCTF ISITDTU 2019 EasyPHP 1 直接代码审计 第一个if 过preg match 一般有三种方法 取反绕过 异或绕过 转义绕过 这里用取反绕过 第二个if的意思是输入的字符串不重复的字符长度不超过0xd即13 如
  • CTFshow 信息收集 web 6 7 8 9 10

    目录 第六关 提示 flag 第七关 提示 知识点 flag 第八关 提示 知识点 flag 第九关 提示 知识点 flag 第十关 提示 flag 第六关 提示 解压源码到当前目录 测试正常 收工 这道题考的是备份文件www zip 根据
  • [NISACTF 2022]babyupload

    NISACTF 2022 babyupload 本题考点 python代码审计 os path join 处理路径拼接的问题 做题过程 经典的文件上传页面 F12查看源码
  • 2020ciscn wp

    目录 1 签到电台 2 基于挑战码的双向认证 1 2 3 web Ezpo 4 基于挑战码的双向认证3 5 ISO9798 6 问卷调查 7 ez usb 8 login nomal 1 签到电台 操作内容 根据公众号提示 知道了模十的算法
  • fileclude(文件包含漏洞及php://input、php://filter的使用)

    先介绍一些知识 1 文件包含漏洞 和SQL注入等攻击方式一样 文件包含漏洞也是一种注入型漏洞 其本质就是输入一段用户能够控制的脚本或者代码 并让服务端执行 什么叫包含呢 以PHP为例 我们常常把可重复使用的函数写入到单个文件中 在使用该函数
  • CTFSHOW【萌新计划】Writeup

    CTFSHOW 萌新计划 web1 萌新计划 web2 萌新计划 web3 萌新计划 web4 萌新计划 web5 萌新计划 web6 萌新计划 web7 萌新计划 web8 萌新计划 web9 萌新计划 web10 萌新计划 web11
  • upload-labs:pass-10

    is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array php php5 php4 php3 php2 html htm
  • [西湖论剑2021中国杭州网络安全技能大赛]Yusa的秘密 writeup

    西湖论剑2021 Yusa的秘密 Sakura组织即将进攻地球 此时你意外得到了该组织内某个成员的电脑文件 你能从中发现本次阴谋所用的关键道具吗 注 题目中包含了五个彩蛋 且彩蛋对解题本身没有任何影响 快去发现吧 附件 Who am I z
  • ctfshow-web3

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 这个题目一看就知道是一个文件包含漏洞 php input可以访问请求的原始数据的只读流 将post请求的数据当作php代码执行 GET ht
  • ctfshow-web4

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 和web3是相同的内容 这里可以通过任意文件读取的方式来进行利用 这里根据返回包知道是nginx 默认nginx日志是 var log ng
  • 安恒10月夺旗赛

    概述 昨天参加的比赛 这个比赛是信安之路微信公众号和安恒合作的一个比赛 是个人赛 作为一个大一的嫩鸡 还是搞web的 对于re和pwn毫无办法 所以昨天最终的结果是这样的 过程 这一次部分题需要用VPN内网访问 但是不知道为什么刚开始的时候
  • php伪随机数

    目录 函数介绍 代码测试 考点 1 根据种子预测随机数 2 根据随机数预测种子 函数介绍 mt srand 播种 Mersenne Twister 随机数生成器 mt rand 生成随机数 简单来说mt srand 通过分发seed种子 然
  • Android_CTF: kgb_messenger

    环境 kgb messenger apk 测试机 OnePlus Andorid 9 1 Alerts 安装该apk后 使用发现如下的界面 用 jadx 反编译该 apk 搜索字符串 Russian 在MainActivity中发现了以上字
  • [BDSec CTF 2022] 部分WP

    组队参加了个国外的小线上赛 题目比较简单 目录 PWN pwnrace Reverse BDSec License Checker 0x1 shashdot Flag Box Simple Math Poster BDSec License
  • Bugku题目Reverse逆向部分wp(持续更新)

    目录 入门逆向 Easy Re 游戏过关 sign in Easy vb Next 入门逆向 题目链接 丢入DIE PEID看过 没有壳 32位 直接IDA 汇编代码直接看到 flag Re 1s S0 C0OL Easy Re 题目链接
  • 攻防世界adworld-hit-the-core

    hit the core 题目来源 CTF 题目描述 暂无 题目附件 下载附件 kwkl kwkl strings home kwkl 桌面 8deb5f0c2cd84143807b6175f58d6f3f core CORE code c

随机推荐

  • 无需第三者的交换

    a i a i a index a index a i a index a i a i a index 无需第三者的交换
  • IDEA的使用

    文章目录 2 IDEA的使用 2 1 工具栏 2 2 启动IDEA选择项目 2 3 IDEA重启 2 4 自动提示区分大小写 2 5 tomcat启动中文乱码 2 5 1 修改tomcat 2 5 2 修改IDEA 2 6 jsp改变需要重
  • Alibaba Java Coding Guidelines,Java开发规范IDEA插件

    阿里巴巴Java开发规约 让开发者更加方便 快速将代码规范起来 Alibaba Java Coding Guidelines 是阿里巴巴基于手册内容 研发的一套自动化的IDE检测插件 IDEA Eclipse 安装步骤如下 1 打开 IDE
  • 13.8 asyncio高并发爬虫

    asyncio爬虫 去重 入库 import asyncio import re import aiohttp import aiomysql from pyquery import PyQuery from aiohttp import
  • java Spring Boot生成图片二维码

    首先 我们要引入依赖 pom xml中插入
  • pycharm快捷方式

    Python IDE PyCharm的快捷键大全 1 编辑 Editing Ctrl Space 基本的代码完成 类 方法 属性 Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信
  • 新计算机c盘太小,电脑C盘太小,F盘太大,怎么重新调整分区容量?

    先在F盘装个系统 重新登陆后再把鼠标右击F盘盘符 注意先看好盘的大小 因为登陆后原来的F盘就成C盘了 原来的C盘名字也会改变成别的 所以事先最好记到多大的是F盘 多大的是C盘 1 单击 开始 控制面板 管理工具 计算机管理 计算机管理 在窗
  • QT系列第9节 文件目录操作

    QT编程中 文件目录操作很常见 现在就将常用的文件目录操作做一个总结 1 文件操作 QFile支持文本文件和二进制文件的操作 主要接口如下 qint64 read char data qint64 maxSize QByteArray re
  • ajax提交datagrid,AJAX DataGrid

    xmlns http tempuri org gt
  • PyTorch RuntimeError: DataLoader worker (pid(s) 15804) exited unexpectedly

    创建于 2021 10 20 1 报错 RuntimeError DataLoader worker pid s 15804 exited unexpectedly 网络上给出了方案 如 cuda 虚拟环境的共享内存不足 增大内存 改成更小
  • 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo

    最近用到窗口变化的一些东西 遇到几个相关的消息函数 简要分析 作为备忘 3个消息分别是 WM SIZE WM SIZING WM GETMINMAXINFO 分别对应相应的处理函数 OnSize OnSizing OnGetMinMaxIn
  • Redis 10 大性能优化策略

    来源 阿里开发者 ID ali tech 一 Redis为什么变慢了 1 Redis真的变慢了吗 对 Redis 进行基准性能测试 例如 我的机器配置比较低 当延迟为 2ms 时 我就认为 Redis 变慢了 但是如果你的硬件配置比较高 那
  • Metasploitable2靶机渗透

    Metasploitable2靶机渗透 Metasploitable2介绍 Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统 本身设计作为安全工具测试和演示常见漏洞攻击 版本2已经可以下载 并且比上一个版本包含更
  • 阿里云服务器安全组放行宝塔端口8888

    阿里云服务器安装宝塔面板需要在安全组中开放8888 888 80 443 20 21端口 安全组默认只开放22和3389端口 阿里云服务器网来详细说下阿里云服务器ECS安全组开放宝塔面板端口的方法教程 云服务器安全组开放宝塔端口 阿里云服务
  • SpringBoot + Apache Shrio 构建通用权限系统,提示SecurityUtils.getSubject().getPrincipal() 转换类型错误

    构建SimpleAuthenticationInfo 权限配置信息 new SimpleAuthenticationInfo user password getName 参数说明 user 用户信息 password 用户密码 realm
  • Unity-网络开发(三)

    大小端模式 什么是大小端模式 大端模式 是指数据的高字节保存在内存的低地址中 而数据的低字节保存在内存的高地址中 这样的存储模式有点儿类似于把数据当作字符串顺序处理 地址由小向大增加 数据从高位往低位放 符合人类的阅读习惯 小端模式 是指数
  • c语言桶排序对链表,关于算法:如果我们使用链表实现存储桶,存储桶排序的复杂度如何为O(n + k)?...

    我很好奇 如果我们使用通过链表实现的存储桶 为什么存储桶排序的运行时间为O n k 例如 假设我们有以下输入 n no of element 8 k range 3 array 2 2 1 1 1 3 1 3 桶将如下所示 1 1 gt 1
  • 虚拟化习题(1)

    1 单选题 vmdk后缀的文件是 A 磁盘文件 B 内存文件 C 快照文件 D 磁盘锁文件 2 单选题 链接克隆是通过父虚拟机的 创建而成 因此节省了磁盘空间 而且克隆速度非常快 但是克隆后的虚拟机性能能会有所下降 A 磁盘 B 镜像 C
  • 【202206-3】角色授权

    AC的快乐无与伦比 本蒟蒻刚看到这道题时 就被超长的题干和复杂的关系唬住了 于是学习了各路大神的解法 终于AC 成功照虎画猫了 现将在此过程中学到的种种知识总结如下 作为本小白菜 不但小白还有菜 的编程笔记 Attention 一 C 中的
  • 第十届全国大学生信息安全竞赛-线上赛 write up(持续更新)

    0x00 WEB PHP execise web150 这是一道分值150的web题 打开题目链接之后 看到题目界面 可以看到有一处输入的地方可以输入PHP语句 尝试执行以下phpinfo 这里解释下 phpinfo是一个运行指令 目的为显