欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

webctf06Day

程序员文章站 2022-05-07 21:45:51
...
                                         我要成为web????

1.字符?正则?

看题目应该是考正则表达式

 <?php 
highlight_file('2.php');
$key='KEY{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ 
  die('key is: '.$key);
}
?> 

1.preg_match 函数用于执行一个正则表达式匹配:

看见这个函数,你的字符串一定要匹配他的正则表达式,这要会返回1;不匹配返回0;
preg_match()函数用于正则表达式知识匹配,如果成功则返回1,否则返回0。

Preg_match()在成功匹配之后停止匹配,如果要实现所有结果的内部匹配,则使用preg_match_all()函数。!

2.trim — 去除字符串首尾处的空白字符(或者其他字符)
此函数返回字符串 str 去除首尾空白字符后的结果。
!就是你想让字符串去除啥字符它都可以帮你去除!

PHP正则表达式讲解

PHP正则表达式模式修正符

有一张大佬总结的图:

webctf06Day先除去定界符’/xxxxxx/i’;

"/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i"

大佬给的基本思路:拆分->各个击破
就是一步步看:
所有跟上图就可以写出:
id=keybkeybbbbkey:/F/bKeyg,后面还可以随便加!(看个了兴奋度了)dadadadadffadadw
即可得到flag。

  1. 前女友(SKCTF)
    这个题咋又没了
    只能看大佬的wp了
    webctf06Day
    **webctf06Day代码审计:
    v1v2的值不一样,但是MD5加密后一样。

这里有两种绕过的方式!
1。数组
2。科学计数法 (原理:弱命令“==”)
md5 collision之记录一些MD5值
webctf06Daystrcmp — 二进制安全字符串比较
strcmp()函数也就是用来判断两个字符串是否相等,
strcmp ( string $str1 , string $str2 ) : int
如果 str1 小于 str2 返回 < 0;
如果 str1 大于 str2 返回 > 0;
如果两者相等,返回 0。

这里可以strcmp()绕过;
!0不就绕过了吗!

让这个函数报错,那他返回值就会是0,这样就可以绕过了!
怎么报错呢?
输入数组或者对象,就会报错。但在报错的同时会返回0。

所有两个绕过就可以解决问题????

3.login1(SKCTF)
收获:SQL在执行字符串处理的时候是会自动修剪掉尾部的空白符的
hint(暗示):SQL约束攻击
简单说就是利用约束条件!
那咋利用呀。
看看大佬解析:
webctf06Day 啥是SQL约束攻击
大佬
大佬
大佬说:
约束SQL注入的原理就是利用的约束条件,比如最长只能有15个字符的话,如果你输入的是abcdefghijklmnop(16位),那么保存在数据库里的就是abcdefghijklmno,那么别人用abcdefghijklmno注册一个用户名,就可以登陆你的账户了

还有一个可以利用的地方就是SQL在执行字符串处理的时候是会自动修剪掉尾部的空白符的,也就是说"abc"=="abc ",同样我们可以通过注册用户名为"abc "的账号来登陆"abc"的账号。、

那也就可以
注册个admin+空格
来登录admin账户了

也就是说带空格和不带空格都是一个账户喽!
都试试
试试admin +一个空格
试试admin +俩空格
。。。。。。
都可以????

webctf06Day**

相关标签: web学习之ctf

推荐阅读