感觉复制粘贴没有意思,而且还有点浪费时间,主要是学习,不是复制,那就复制别人的吧
第27关就参考这篇文章吧,以下大部分内容都是参考以下文章(侵权删除)
第27天:WEB攻防-通用漏洞&SQL注入&Tamper脚本&Base64&Json&md5等 - 解放者-cracer - 博客园 (cnblogs.com)
sql注入类型
目录
搜索型
json型
宽字节注入
如果没有实战,那我就多思考一下吧,这个小迪的课都还没搞明白,你去搞其他的,浪费时间啊,这个不就是三分钟热度吗,对学习小迪安全这件事情,吧这个课搞明白,再去搞其他的行不行,我记得小迪说过,学完这个课,可以达到红队初中级,蓝队中高级,真的假的,那就努力学,不要搞其他事情,浪费时间
第26关没有靶场,那个实验做不出来
这个应该都是php+mysql+apache
搜索型
SQL语句:$sql="select * from sy_guestbook where gName like '%$s%'";
这个和其他的语句是不一样的,因为这个的闭合方式是不一样的,也不知道搜索型都是这样的闭合方式,还是只有这一种是这样的,
闭合方式为%' xxxxxx --+,为百分号单引号闭合(如果这样闭合不了的话,那就试试and,使其成为对比条件,使其相等,就不会影响sql语句)
select * from sy_guestbook where gName like '%演示%' +UNION+ALL+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 and '%'='%'
json型
json型 表现形式不一样,提交数据一样的
{“username”:"admin"} 键名和键值
取数据的时候,只会接收admin的值,不会接收双引号。
数据表现形式
json:
{"username":"admin","password":"xiaodi"}
常规:
username=admin&password=xiaodi
如何注入:
常规:username=admin and 1=1&password=xiaodi
json:{"username":"admin and 1=1","password":"xiaodi"}
json格式,参考:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
json注入payload应该怎么构造呢?
这里使用到post提交json={"username":"admin' order by 3#"}
查询用户和数据库名:
json={"username":"admin' and 1=2 union select 1,database(),user()#"}
json型注入,出现的地方,根据我的猜测,应该是出现在用户名和密码的那个地方,也就是登录的地方,因为一个键对应一个值,格式是这样的
宽字节注入
宽字节注入条件:
(1)数据库查询设置为GBK编码
(2)使用了addslashes(),mysql_real_escape_string(),mysql_escape_string()之类的函数
首先我们需要知道他是宽字节注入(小迪说的),所以我们先测试应该是这样测试的,%df',看是否报错
关于迪哥为什么加上and 1=-2,应该是让前面的式子不成立,执行后面的sql语句,我觉得可以直接在id=1,把1改成-1,前面搜索的结果为假,然后执行后面的aql语句
http://219.153.49.228:42692/new_list.php?id=1%df' and 1=-2 union select 1,2 3,4.5-- +
SQL注入接收数据,但是数据会出现/ \这种符号
转义函数:addslashes
\n 换行
\n 字符串,但是电脑以为你是换行
对字符串进行转义,\\n进行转义。
%df就可以进行绕过,利用宽字节
原理:利用繁体字或者乱码,来进行占用两个字节。
\ 一个字节
� 两个字节
中文 两个字节
用到了addslashes函数后,再次进行注入的时候
注入payload:http://127.0.0.1:8081/web/news.php?gtpl=simple' order by 17--+
但是实际上的SQL语句执行时候:select * from sy_guestbook where gTpl='simple\' order by 17--+'
对'进行了转义,变成了\'
参考
json的几种标准格式_json格式-CSDN博客
宽字节注入-CSDN博客