笔者之所以再图上都打上红线,因为那些都是笔者的IP地址,为何会有它,这就扯到了burp抓取本地包的问题了,你抓不到本地包,将127.0.0.1
改为你的IP就好了(本想改HOSTS文件,发现没球用)
Less-18
手工注入
1.打开界面有一个IP地址,
多次尝试注入后,都是回显你的IP地址,这里自然就想到了XFF头,但是经过burp拦截更改XFF后,页面还是显示你的IP地址,说明XFF不存在注入
2.查看源码
$uagent = $_SERVER['HTTP_USER_AGENT'];
$IP = $_SERVER['REMOTE_ADDR'];
源码使用HTTP_USER_AGENT
只获取了HTTP
请求头的一个部分:User-Agent
。
而获取IP
则使用了REMOTE_ADDR
,这能直接获取TCP
协议数据包的底层会话IP
地址,它能被代理服务器或路由修改伪造,但非修改XFF
头就可以更改的。
再来看
$uname = check_input($_POST['uname']);
$passwd = check_input($_POST['passwd']);
uname
和passwd
都经过check_input()
处理,经过Less-17分析,两者不存在注入点
但是后来尝试发现登录成功后会回显User-Agent
和IP
这里要输入正确的账号和密码才能绕过账号密码判断,进入处理User-Agent
部分。这跟现实中的注册登录再注入是比较贴合。
3.对User-Agent
进行测试,确定它是否是注入点
构造User-Agent: 66666'
,发现回显错误,果然存在注入
而且根据回显可以判断出闭合方式且后台语句为Insert
Insert
语法:INSERT INTO table_name ('uagent','ip_address','username') VALUES ('$uagent','$IP','$uname')
,所以可以构造闭合语句了,User-Agent: 66666','','')#
(此处为两个单引号),开始注入了
4.爆库,构造User-Agent: 66666'and updatexml(1,concat('~',(select group_concat(schema_name)from information_schema.schemata)),0),'','')#
5.接下来爆表,爆表列,字段等前面GET篇都有
sqlmap注入
1.由手工注入的分析可以构造以下语句
py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-18/" --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0" -batch --level 4 --dbs --threads 10
或者py -2 sqlmap.py -r 1.txt --threads 10 -batch --dbs
(这里的1.txt是burp截取的数据包,复制粘贴过去的)
-r
: sqlmap
可以从一个文本文件中获取HTTP
请求,这样就可以跳过设置一些其他参数(比如cookie
,POST
数据,等等)
--user-agent
:http
头会携带一个值,就是user-agent
,表示访问的浏览器的信息
sqlmap
检查uesr-agent
中的注入点,
lever>=3
才会去检查ser-agent
头是否存在注入漏洞
2.爆其他东西就是改改参数啦
Less-19
1.打开界面同Less-18一样,又是显示你的IP
地址,我想这次应该是改XFF
头了吧,结果尝试很多情况发现也不是的,还是登录成功后显示了(说到登陆成功有一点要注意,你的密码可能在Less-16重置了,你可以去改回来)
2,burp拦截后,显示了Referer
,猜想和Less-18一样它可能是注入点,构造Referer: 6666'
,结果如下
,根据错误提示可知后台又是Insert
语句,所以闭合方式为6666','')#
3.接下里的工作就和Less-18一样了,同样也可以用sqlmap
Less-20
1.首先在Username
和Password
各种姿势尝试注入,没啥用,都是Login fail,还是登陆成功注入这种方式吧,登陆成功后,界面如下
显示了很多东西,
2.burp拦截还是,放了两次包后得到如下数据
这里看见了Cookie
是我登陆时候的用户名,可以由我们(也就是用户控制),所以可能存在注入点,尝试构造Cookie: uname=admin'
,果然存在注入,
根据错误提示,可知后台语句为select
且闭合方式为admin'#
3.好了接下来注入就可以搞了,也是可以用sqlmap
的,改改参数就好了(注意--level 3
)
Less-21
1.打开界面还是同Less-20一样,尝试对Username
和Password
各种姿势注入后都是Login Fail,看来还是得登陆成功再尝试注入啊,登陆成功后界面如下,显示了很多东西,但是最引人瞩目的还是Cookie
,后面的一串字符,很像是base64
加密啊,上网解密后为admin
,
2.burp拦截,放两次包到登陆成功界面后,得到
Cookie
又是我们可控制的,可能存在注入,构造Cookie: uname=YWRtaW4n
(这里uname
内容就是admin'
base64加密后得到的,还有一点,如果你找的在线base加密注入后没成功,可能是编码问题,你可以通过burp
自带的编码器进行加密,因为burp的编码是自动判断编码方式的),果然存在注入,且根据错误提示可知后台语句为select
,闭合方式为Cookie: uname=YWRtaW4nKSM=
(明文:admin’)#)
3.找到注入点,闭合方式了,接下来问题就可以轻松解决了,sqlmap
也是可以用的
Less-22
同Less-21是一样的操作,只是闭合方式为Cookie: uname=YWRtaW4iIw==
(明文:admin"#)
POST篇搞定,明天开始搞过滤!!!冲!!!